Fragmented advertisements for co-located social groups

ABSTRACT

Systems and methods are disclosed for delivering a fragmented advertisement to a group of users identified as a group of participants for the fragmented advertisement. As used herein, a fragmented advertisement is an advertisement that includes two or more advertisement fragments each to be delivered to a different participant in a group of participants identified for the fragmented advertisement, where the two or more advertisement fragments encourage interaction between participants to achieve a predefined goal of the fragmented advertisement in order to obtain a corresponding advertisement benefit. For example, the predefined goal of a fragmented advertisement may be correctly answering a question (e.g., a trivia question), solving a puzzle, or the like. The advertisement benefit is preferably a coupon for a business, product, or service being advertised by the fragmented advertisement.

RELATED APPLICATIONS

This application claims the benefit of provisional patent applicationSer. No. 61/289,107, filed Dec. 22, 2009, the disclosure of which ishereby incorporated herein by reference in its entirety.

FIELD OF THE DISCLOSURE

The present disclosure relates to delivering advertisements to a groupof users and more specifically relates to delivering a fragmentedadvertisement to a group of users.

BACKGROUND

The current generation of location-based targeted advertisements tend tobe simple, static advertisements that are targeted at individuals.However, in many situations, people travel in groups. For example, inmany situations, a person goes to shopping malls with groups of friends.As such, there is a need for a system and method of delivering targetedadvertisements to groups of users.

SUMMARY

The present disclosure relates to delivering a fragmented advertisementto a group of users identified as a group of participants for thefragmented advertisement. As used herein, a fragmented advertisement isan advertisement that includes two or more advertisement fragments eachto be delivered to a different participant in a group of participantsidentified for the fragmented advertisement, where the two or moreadvertisement fragments encourage interaction between participants toachieve a predefined goal of the fragmented advertisement in order toobtain a corresponding advertisement benefit. For example, thepredefined goal of a fragmented advertisement may be correctly answeringa question (e.g., a trivia question), solving a puzzle, or the like. Theadvertisement benefit is preferably a coupon for a business, product, orservice being advertised by the fragmented advertisement.

In general, a group of participants is identified. The group ofparticipants is preferably a group of co-located users. A fragmentedadvertisement is then determined for the group of participants. In oneembodiment, the fragmented advertisement is selected for the group ofparticipants based on one or more selection criteria such as, forexample, an aggregate profile of the group of participants, userprofiles of the participants in the group of participants, a location ofthe group of co-located users, time of day, nearby businesses or otherPoints of Interest (POIs), advertisement value, or the like. In anotherembodiment, the fragmented advertisement is generated for the group ofparticipants based on one or more characteristics of the group ofparticipants such as, for example, a number of participants in the groupof participants, an aggregate profile of the group of participants, userprofiles of the participants in the group of participants, a location ofthe group of participants, or the like. The fragmented advertisement isthen delivered to the group of participants. Thereafter, in oneembodiment, a response is received that is indicative of whether thegroup of participants achieved the predefined goal of the fragmentedadvertisement. If the group of participants achieved the predefined goalof the fragmented advertisement, then an advertisement benefit for thefragmented advertisement is delivered to the group of participants.

Those skilled in the art will appreciate the scope of the presentdisclosure and realize additional aspects thereof after reading thefollowing detailed description of the preferred embodiments inassociation with the accompanying drawing figures.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

The accompanying drawing figures incorporated in and forming a part ofthis specification illustrate several aspects of the disclosure, andtogether with the description serve to explain the principles of thedisclosure.

FIG. 1 illustrates a system for delivering fragmented advertisementsaccording to one embodiment of the present disclosure;

FIG. 2 is a more detailed illustration of the Mobile Aggregate Profile(MAP) server of FIG. 1 according to one embodiment of the presentdisclosure;

FIG. 3 is a more detailed illustration of the MAP application of one ofthe mobile devices of FIG. 1 according to one embodiment of the presentdisclosure;

FIG. 4 illustrates the operation of the system of FIG. 1 to provide userprofiles and current locations of the users of the mobile devices to theMAP server according to one embodiment of the present disclosure;

FIG. 5 illustrates the operation of the system of FIG. 1 to provide userprofiles and current locations of the users of the mobile devices to theMAP server according to another embodiment of the present disclosure;

FIG. 6 illustrates exemplary data records that may be used to representcrowds, users, crowd snapshots, and anonymous users according to oneembodiment of the present disclosure;

FIGS. 7A through 7D illustrate one embodiment of a spatial crowdformation process that may be used to enable crowd tracking according toone embodiment of the present disclosure;

FIGS. 8A through 8D graphically illustrate the crowd formation processof FIGS. 7A through 7D for a scenario where the crowd formation processis triggered by a location update for a user having no old location;

FIGS. 9A through 9F graphically illustrate the crowd formation processof FIGS. 7A through 7D for a scenario where the new and old boundingboxes overlap;

FIGS. 10A through 10E graphically illustrate the crowd formation processof FIGS. 7A through 7D in a scenario where the new and old boundingboxes do not overlap;

FIG. 11 illustrates a process for creating crowd snapshots according toone embodiment of the present disclosure;

FIG. 12 illustrates the operation of the system to deliver a fragmentedadvertisement to a group of participants according to one embodiment ofthe present disclosure;

FIGS. 13A and 13B illustrate the operation of a fragmented advertisementdelivery function to deliver a fragmented advertisement to a group ofparticipants and the operation of a master device of one of theparticipants to receive and distribute the fragmented advertisement,respectively, according to one embodiment of the present disclosure;

FIGS. 14A through 14D graphically illustrate an exemplary fragmentedadvertisement and a corresponding advertisement benefit according to oneembodiment of the present disclosure;

FIG. 15 is a block diagram of the MAP server of FIG. 1 according to oneembodiment of the present disclosure; and

FIG. 16 is a block diagram of one of the mobile devices of FIG. 1according to one embodiment of the present disclosure.

DETAILED DESCRIPTION

The embodiments set forth below represent the necessary information toenable those skilled in the art to practice the embodiments andillustrate the best mode of practicing the embodiments. Upon reading thefollowing description in light of the accompanying drawing figures,those skilled in the art will understand the concepts of the disclosureand will recognize applications of these concepts not particularlyaddressed herein. It should be understood that these concepts andapplications fall within the scope of the disclosure and theaccompanying claims.

The present disclosure relates to delivering a fragmented advertisementto a group of users identified as a group of participants for thefragmented advertisement. As used herein, a fragmented advertisement isan advertisement that includes two or more advertisement fragments eachto be delivered to a different participant in a group of participantsidentified for the fragmented advertisement, where the two or moreadvertisement fragments encourage interaction between participants toachieve a predefined goal of the fragmented advertisement in order toobtain a corresponding advertisement benefit. For example, thepredefined goal of a fragmented advertisement may be correctly answeringa question (e.g., a trivia question), solving a puzzle, or the like. Theadvertisement benefit is preferably a coupon for a business, product, orservice being advertised by the fragmented advertisement.

FIG. 1 illustrates a Mobile Aggregate Profiling (MAP) system 10(hereinafter “system 10”) that operates to deliver fragmentedadvertisements to groups of participants according to one embodiment ofthe present disclosure. Note that the system 10 is exemplary and is notintended to limit the scope of the present disclosure. In thisembodiment, the system 10 includes a MAP server 12, one or more profileservers 14, a location server 16, a number of mobile devices 18-1through 18-N (generally referred to herein collectively as mobiledevices 18 and individually as mobile device 18) having associated users20-1 through 20-N (generally referred to herein collectively as users 20and individually as user 20), a subscriber device 22 having anassociated subscriber 24, and a third-party service 26 communicativelycoupled via a network 28. The network 28 may be any type of network orany combination of networks. Specifically, the network 28 may includewired components, wireless components, or both wired and wirelesscomponents. In one exemplary embodiment, the network 28 is a distributedpublic network such as the Internet, where the mobile devices 18 areenabled to connect to the network 28 via local wireless connections(e.g., Wi-Fi® or IEEE 802.11 connections) or wireless telecommunicationsconnections (e.g., 3 G or 4 G telecommunications connections such asGSM, LTE, W-CDMA, or WiMAX® connections).

As discussed below in detail, the MAP server 12 operates to obtaincurrent locations, including location updates, and user profiles of theusers 20 of the mobile devices 18. The current locations of the users 20can be expressed as positional geographic coordinates such aslatitude-longitude pairs, and a height vector (if applicable), or anyother similar information capable of identifying a given physical pointin space in a two-dimensional or three-dimensional coordinate system.Using the current locations and user profiles of the users 20, the MAPserver 12 is enabled to provide a number of features such as, but notlimited to, forming crowds of users using current locations and/or userprofiles of the users 20, generating aggregate profiles for crowds ofusers, tracking crowds of users, and delivering fragmentedadvertisements. Note that while the MAP server 12 is illustrated as asingle server for simplicity and ease of discussion, it should beappreciated that the MAP server 12 may be implemented as a singlephysical server or multiple physical servers operating in acollaborative manner for purposes of redundancy and/or load sharing.

In general, the one or more profile servers 14 operate to store userprofiles for a number of persons including the users 20 of the mobiledevices 18. For example, the one or more profile servers 14 may beservers providing social network services such as the Facebook® socialnetworking service, the MySpace® social networking service, theLinkedIN® social networking service, or the like. As discussed below,using the one or more profile servers 14, the MAP server 12 is enabledto directly or indirectly obtain the user profiles of the users 20 ofthe mobile devices 18. The location server 16 generally operates toreceive location updates from the mobile devices 18 and make thelocation updates available to entities such as, for instance, the MAPserver 12. In one exemplary embodiment, the location server 16 is aserver operating to provide Yahoo!'s Fire Eagle® service.

The mobile devices 18 may be mobile smart phones, portable media playerdevices, mobile gaming devices, mobile computers (e.g., laptopcomputers) or the like. Some exemplary mobile devices that may beprogrammed or otherwise configured to operate as the mobile devices 18are the Apple® iPhone®, the Palm Pre®, the Samsung Rogue™, theBlackberry Storm™, the Motorola DROID or similar phone running Google'sAndroid™ Operating System, an Apple® iPad™, and the Apple® iPod Touch®device. However, this list of exemplary mobile devices is not exhaustiveand is not intended to limit the scope of the present disclosure.

The mobile devices 18-1 through 18-N include MAP clients 30-1 through30-N (generally referred to herein collectively as MAP clients 30 orindividually as MAP client 30), MAP applications 32-1 through 32-N(generally referred to herein collectively as MAP applications 32 orindividually as MAP application 32), third-party applications 34-1through 34-N (generally referred to herein collectively as third-partyapplications 34 or individually as third-party application 34), andlocation functions 36-1 through 36-N (generally referred to hereincollectively as location functions 36 or individually as locationfunction 36), respectively. The MAP client 30 is preferably implementedin software. In general, in the preferred embodiment, the MAP client 30is a middleware layer operating to interface an application layer (i.e.,the MAP application 32 and the third-party applications 34) to the MAPserver 12. More specifically, the MAP client 30 enables the MAPapplication 32 and the third-party applications 34 to request andreceive data from the MAP server 12. In addition, the MAP client 30enables applications, such as the MAP application 32 and the third-partyapplications 34, to access data from the MAP server 12.

The MAP application 32 is also preferably implemented in software. TheMAP application 32 generally provides a user interface component betweenthe user 20 and the MAP server 12. For example, the MAP application 32may enable the user 20 to initiate crowd search requests or requests forcrowd data from the MAP server 12 and presents corresponding datareturned by the MAP server 12 to the user 20. The MAP application 32also enables the user 20 to configure various settings. For example, theMAP application 32 may enable the user 20 to select a desired socialnetworking service (e.g., Facebook®, MySpace®, LinkedIN®, etc.) fromwhich to obtain the user profile of the user 20 and provide anynecessary credentials (e.g., username and password) needed to access theuser profile from the social networking service.

The third-party applications 34 are preferably implemented in software.The third-party applications 34 operate to access the MAP server 12 viathe MAP client 30. The third-party applications 34 may utilize dataobtained from the MAP server 12 in any desired manner. As an example,one of the third-party applications 34 may be a gaming application thatutilizes crowd data to notify the user 20 of Points of Interest (POIs)or Areas of Interest (AOIs) where crowds of interest are currentlylocated. It should be noted that while the MAP client 30 is illustratedas being separate from the MAP application 32 and the third-partyapplications 34, the present disclosure is not limited thereto. Thefunctionality of the MAP client 30 may alternatively be incorporatedinto the MAP application 32 and the third-party applications 34.

The location function 36 may be implemented in hardware, software, or acombination thereof. In general, the location function 36 operates todetermine or otherwise obtain the location of the mobile device 18. Forexample, the location function 36 may be or include a Global PositioningSystem (GPS) receiver. In addition or alternatively, the locationfunction 36 may include hardware and/or software that enables improvedlocation tracking in indoor environments such as, for example, shoppingmalls. For example, the location function 36 may be part of orcompatible with the InvisiTrack Location System provided by InvisiTrackand described in U.S. Pat. No. 7,423,580 entitled “Method and System ofThree-Dimensional Positional Finding” which issued on Sep. 9, 2008, U.S.Pat. No. 7,787,886 entitled “System and Method for Locating a Targetusing RFID” which issued on Aug. 31, 2010, and U.S. Patent ApplicationPublication No. 2007/0075898 entitled “Method and System for PositionalFinding Using RF, Continuous and/or Combined Movement” which publishedon Apr. 5, 2007, all of which are hereby incorporated herein byreference for their teachings regarding location tracking.

The subscriber device 22 is a physical device such as a personalcomputer, a mobile computer (e.g., a notebook computer, a netbookcomputer, a tablet computer, etc.), a mobile smart phone, or the like.The subscriber 24 associated with the subscriber device 22 is a personor entity. In general, the subscriber device 22 enables the subscriber24 to access the MAP server 12 via a web browser 38 to obtain varioustypes of data, preferably for a fee. For example, the subscriber 24 maypay a fee to have access to crowd data such as aggregate profiles forcrowds located at one or more POIs and/or located in one or more AOIs,pay a fee to track crowds, or the like. Note that the web browser 38 isexemplary. In another embodiment, the subscriber device 22 is enabled toaccess the MAP server 12 via a custom application.

Lastly, the third-party service 26 is a service that has access to datafrom the MAP server 12 such as, for example, aggregate profiles for oneor more crowds at one or more POIs or within one or more AOIs. Based onthe data from the MAP server 12, the third-party service 26 operates toprovide a service such as, for example, targeted advertising. Forexample, the third-party service 26 may obtain anonymous aggregateprofile data for one or more crowds located at a POI and then providetargeted advertising to known users located at the POI based on theanonymous aggregate profile data. Note that while targeted advertisingis mentioned as an exemplary third-party service 26, other types ofthird-party services 26 may additionally or alternatively be provided.Other types of third-party services 26 that may be provided will beapparent to one of ordinary skill in the art upon reading thisdisclosure.

Before proceeding, it should be noted that while the system 10 of FIG. 1illustrates an embodiment where the one or more profile servers 14 andthe location server 16 are separate from the MAP server 12, the presentdisclosure is not limited thereto. In an alternative embodiment, thefunctionality of the one or more profile servers 14 and/or the locationserver 16 may be implemented within the MAP server 12.

FIG. 2 is a block diagram of the MAP server 12 of FIG. 1 according toone embodiment of the present disclosure. As illustrated, the MAP server12 includes an application layer 40, a business logic layer 42, and apersistence layer 44. The application layer 40 includes a user webapplication 46, a mobile client/server protocol component 48, and one ormore data Application Programming Interfaces (APIs) 50. The user webapplication 46 is preferably implemented in software and operates toprovide a web interface for users, such as the subscriber 24, to accessthe MAP server 12 via a web browser. The mobile client/server protocolcomponent 48 is preferably implemented in software and operates toprovide an interface between the MAP server 12 and the MAP clients 30hosted by the mobile devices 18. The data APIs 50 enable third-partyservices, such as the third-party service 26, to access the MAP server12.

The business logic layer 42 includes a profile manager 52, a locationmanager 54, a history manager 56, a crowd analyzer 58, an aggregationengine 60, and a fragmented advertisement (“ad”) function 62 each ofwhich is preferably implemented in software. The profile manager 52generally operates to obtain the user profiles of the users 20 directlyor indirectly from the one or more profile servers 14 and store the userprofiles in the persistence layer 44. The location manager 54 operatesto obtain the current locations of the users 20 including locationupdates. As discussed below, the current locations of the users 20 maybe obtained directly from the mobile devices 18 and/or obtained from thelocation server 16.

The history manager 56 generally operates to maintain a historicalrecord of anonymized user profile data by location. Note that while theuser profile data stored in the historical record is preferablyanonymized, it is not limited thereto. The crowd analyzer 58 operates toform crowds of users. In one embodiment, the crowd analyzer 58 utilizesa spatial crowd formation algorithm. However, the present disclosure isnot limited thereto. In addition, the crowd analyzer 58 may furthercharacterize crowds to reflect degree of fragmentation, best-case andworst-case degree of separation (DOS), and/or degree ofbi-directionality. Still further, the crowd analyzer 58 may also operateto track crowds. The aggregation engine 60 generally operates to provideaggregate profile data in response to requests from the mobile devices18, the subscriber device 22, and the third-party service 26. Theaggregate profile data may be historical aggregate profile data for oneor more POIs or one or more AOIs or aggregate profile data for crowd(s)currently at one or more POIs or within one or more AOIs. As discussedbelow in detail, the fragmented ad function 62 operates to deliverfragmented advertisements to groups of participants. Preferably, thegroups of participants are groups of co-located users. Morespecifically, in the preferred embodiment described herein, the groupsof participants are crowds of users. However, the present disclosure isnot limited thereto.

For additional information regarding the operation of the profilemanager 52, the location manager 54, the history manager 56, the crowdanalyzer 58, and the aggregation engine 60, the interested reader isdirected to U.S. patent application Ser. No. 12/645,532, entitledFORMING CROWDS AND PROVIDING ACCESS TO CROWD DATA IN A MOBILEENVIRONMENT, which was filed Dec. 23, 2009; U.S. patent application Ser.No. 12/645,539, entitled ANONYMOUS CROWD TRACKING, which was filed Dec.23, 2009; U.S. patent application Ser. No. 12/645,535, entitledMAINTAINING A HISTORICAL RECORD OF ANONYMIZED USER PROFILE DATA BYLOCATION FOR USERS IN A MOBILE ENVIRONMENT, which was filed Dec. 23,2009; U.S. patent application Ser. No. 12/645,546, entitled CROWDFORMATION FOR MOBILE DEVICE USERS, which was filed Dec. 23, 2009; U.S.patent application Ser. No. 12/645,556, entitled SERVING A REQUEST FORDATA FROM A HISTORICAL RECORD OF ANONYMIZED USER PROFILE DATA IN AMOBILE ENVIRONMENT, which was filed Dec. 23, 2009; U.S. patentapplication Ser. No. 12/645,560, entitled HANDLING CROWD REQUESTS FORLARGE GEOGRAPHIC AREAS, which was filed Dec. 23, 2009; and U.S. patentapplication Ser. No. 12/645,544, entitled MODIFYING A USER'SCONTRIBUTION TO AN AGGREGATE PROFILE BASED ON TIME BETWEEN LOCATIONUPDATES AND EXTERNAL EVENTS, which was filed Dec. 23, 2009; all of whichare hereby incorporated herein by reference in their entireties.

The persistence layer 44 includes an object mapping layer 63 and adatastore 64. The object mapping layer 63 is preferably implemented insoftware. The datastore 64 is preferably a relational database, which isimplemented in a combination of hardware (i.e., physical data storagehardware) and software (i.e., relational database software). In thisembodiment, the business logic layer 42 is implemented in anobject-oriented programming language such as, for example, Java. Assuch, the object mapping layer 63 operates to map objects used in thebusiness logic layer 42 to relational database entities stored in thedatastore 64. Note that, in one embodiment, data is stored in thedatastore 64 in a Resource Description Framework (RDF) compatibleformat.

In an alternative embodiment, rather than being a relational database,the datastore 64 may be implemented as an RDF datastore. Morespecifically, the RDF datastore may be compatible with RDF technologyadopted by Semantic Web activities. Namely, the RDF datastore may usethe Friend-Of-A-Friend (FOAF) vocabulary for describing people, theirsocial networks, and their interests. In this embodiment, the MAP server12 may be designed to accept raw FOAF files describing persons, theirfriends, and their interests. These FOAF files are currently output bysome social networking services such as LiveJournal® and Facebook®. TheMAP server 12 may then persist RDF descriptions of the users 20 as aproprietary extension of the FOAF vocabulary that includes additionalproperties desired for the system 10.

FIG. 3 illustrates the MAP client 30 of FIG. 1 in more detail accordingto one embodiment of the present disclosure. As illustrated, in thisembodiment, the MAP client 30 includes a MAP access API 66, a MAPmiddleware component 68, and a mobile client/server protocol component70. The MAP access API 66 is implemented in software and provides aninterface by which the MAP client 30 and the third-party applications 34are enabled to access the MAP client 30. The MAP middleware component 68is implemented in software and performs the operations needed for theMAP client 30 to operate as an interface between the MAP application 32and the third-party applications 34 at the mobile device 18 and the MAPserver 12. The mobile client/server protocol component 70 enablescommunication between the MAP client 30 and the MAP server 12 via adefined protocol.

The present disclosure is primarily focused on the delivery offragmented advertisements. However, before discussing the delivery offragmented advertisements in detail, it is beneficial to discuss otherfeatures of the MAP server 12, namely, the operation of the MAP server12 to obtain user profiles and location updates and to create and trackcrowds of users. As described below, the crowds of users are utilized bythe fragmented ad function 62 to identify groups of participants towhich to deliver fragmented advertisements.

FIG. 4 illustrates the operation of the system 10 of FIG. 1 to providethe user profile of one of the users 20 of one of the mobile devices 18to the MAP server 12 according to one embodiment of the presentdisclosure. This discussion is equally applicable to the other users 20of the other mobile devices 18. First, an authentication process isperformed (step 1000). For authentication, in this embodiment, themobile device 18 authenticates with the profile server 14 (step 1000A)and the MAP server 12 (step 1000B). In addition, the MAP server 12authenticates with the profile server 14 (step 1000C). Preferably,authentication is performed using OpenID or similar technology. However,authentication may alternatively be performed using separate credentials(e.g., username and password) of the user 20 for access to the MAPserver 12 and the profile server 14. Assuming that authentication issuccessful, the profile server 14 returns an authentication succeededmessage to the MAP server 12 (step 1000D), and the profile server 14returns an authentication succeeded message to the MAP client 30 of themobile device 18 (step 1000E).

At some point after authentication is complete, a user profile processis performed such that a user profile of the user 20 is obtained fromthe profile server 14 and delivered to the MAP server 12 (step 1002). Inthis embodiment, the MAP client 30 of the mobile device 18 sends aprofile request to the profile server 14 (step 1002A). In response, theprofile server 14 returns the user profile of the user 20 to the mobiledevice 18 (step 1002B). The MAP client 30 of the mobile device 18 thensends the user profile of the user 20 to the MAP server 12 (step 1002C).Note that while in this embodiment the MAP client 30 sends the completeuser profile of the user 20 to the MAP server 12, in an alternativeembodiment, the MAP client 30 may filter the user profile of the user 20according to criteria specified by the user 20. For example, the userprofile of the user 20 may include demographic information, generalinterests, music interests, and movie interests, and the user 20 mayspecify that the demographic information or some subset thereof is to befiltered, or removed, before sending the user profile to the MAP server12.

Upon receiving the user profile of the user 20 from the MAP client 30 ofthe mobile device 18, the profile manager 52 of the MAP server 12processes the user profile (step 1002D). More specifically, in thepreferred embodiment, the profile manager 52 includes social networkhandlers for the social network services supported by the MAP server 12that operate to map the user profiles of the users 20 obtained from thesocial network services to a common format utilized by the MAP server12. This common format includes a number of user profile categories, oruser profile slices, such as, for example, a demographic profilecategory, a social interaction profile category, a general interestscategory, a music interests profile category, and a movie interestsprofile category.

For example, if the MAP server 12 supports user profiles from Facebook®,MySpace®, and LinkedIN®, the profile manager 52 may include a Facebookhandler, a MySpace handler, and a LinkedIN handler. The social networkhandlers process user profiles from the corresponding social networkservices to generate user profiles for the users 20 in the common formatused by the MAP server 12. For this example assume that the user profileof the user 20 is from Facebook®. The profile manager 52 uses a Facebookhandler to process the user profile of the user 20 to map the userprofile of the user 20 from Facebook® to a user profile for the user 20for the MAP server 12 that includes lists of keywords for a number ofpredefined profile categories, or profile slices, such as, for example,a demographic profile category, a social interaction profile category, ageneral interests profile category, a music interests profile category,and a movie interests profile category. As such, the user profile of theuser 20 from Facebook® may be processed by the Facebook handler of theprofile manager 52 to create a list of keywords such as, for example,liberal, High School Graduate, 35-44, College Graduate, etc. for thedemographic profile category; a list of keywords such as SeekingFriendship for the social interaction profile category; a list ofkeywords such as politics, technology, photography, books, etc. for thegeneral interests profile category; a list of keywords including musicgenres, artist names, album names, or the like for the music interestsprofile category; and a list of keywords including movie titles, actoror actress names, director names, movie genres, or the like for themovie interests profile category. In one embodiment, the profile manager52 may use natural language processing or semantic analysis. Forexample, if the Facebook® user profile of the user 20 states that theuser 20 is 20 years old, semantic analysis may result in the keyword of18-24 years old being stored in the user profile of the user 20 for theMAP server 12.

After processing the user profile of the user 20, the profile manager 52of the MAP server 12 stores the resulting user profile for the user 20(step 1002E). More specifically, in one embodiment, the MAP server 12stores user records for the users 20 in the datastore 64 (FIG. 2). Theuser profile of the user 20 is stored in the user record of the user 20.The user record of the user 20 includes a unique identifier of the user20, the user profile of the user 20, and, as discussed below, a currentlocation of the user 20. Note that the user profile of the user 20 maybe updated as desired. For example, in one embodiment, the user profileof the user 20 is updated by repeating step 1002 each time the user 20activates the MAP application 32.

Note that while the discussion herein focuses on an embodiment where theuser profiles of the users 20 are obtained from the one or more profileservers 14, the user profiles of the users 20 may be obtained in anydesired manner. For example, in one alternative embodiment, the user 20may identify one or more favorite websites. The profile manager 52 ofthe MAP server 12 may then crawl the one or more favorite websites ofthe user 20 to obtain keywords appearing in the one or more favoritewebsites of the user 20. These keywords may then be stored as the userprofile of the user 20.

At some point, a process is performed such that a current location ofthe mobile device 18 and thus a current location of the user 20 isobtained by the MAP server 12 (step 1004). In this embodiment, the MAPapplication 32 of the mobile device 18 obtains the current location ofthe mobile device 18 from the location function 36 of the mobile device18. The MAP application 32 then provides the current location of themobile device 18 to the MAP client 30, and the MAP client 30 thenprovides the current location of the mobile device 18 to the MAP server12 (step 1004A). Note that step 1004A may be repeated periodically or inresponse to a change in the current location of the mobile device 18 inorder for the MAP application 32 to provide location updates for theuser 20 to the MAP server 12.

In response to receiving the current location of the mobile device 18,the location manager 54 of the MAP server 12 stores the current locationof the mobile device 18 as the current location of the user 20 (step1004B). More specifically, in one embodiment, the current location ofthe user 20 is stored in the user record of the user 20 maintained inthe datastore 64 of the MAP server 12. Note that, in the preferredembodiment, only the current location of the user 20 is stored in theuser record of the user 20. In this manner, the MAP server 12 maintainsprivacy for the user 20 since the MAP server 12 does not maintain ahistorical record of the location of the user 20. Any historical datamaintained by the MAP server 12 is preferably anonymized by the historymanager 56 in order to maintain the privacy of the users 20.

In addition to storing the current location of the user 20, the locationmanager 54 sends the current location of the user 20 to the locationserver 16 (step 1004C). In this embodiment, by providing locationupdates to the location server 16, the MAP server 12 in return receiveslocation updates for the user 20 from the location server 16. This isparticularly beneficial when the mobile device 18 does not permitbackground processes. If the mobile device 18 does not permit backgroundprocesses, the MAP application 32 will not be able to provide locationupdates for the user 20 to the MAP server 12 unless the MAP application32 is active. Therefore, when the MAP application 32 is not active,other applications running on the mobile device 18 (or some other deviceof the user 20) may directly or indirectly provide location updates tothe location server 16 for the user 20. This is illustrated in step 1006where the location server 16 receives a location update for the user 20directly or indirectly from another application running on the mobiledevice 18 or an application running on another device of the user 20(step 1006A). The location server 16 then provides the location updatefor the user 20 to the MAP server 12 (step 1006B). In response, thelocation manager 54 updates and stores the current location of the user20 in the user record of the user 20 (step 1006C). In this manner, theMAP server 12 is enabled to obtain location updates for the user 20 evenwhen the MAP application 32 is not active at the mobile device 18.

FIG. 5 illustrates the operation of the system 10 of FIG. 1 to providethe user profile of the user 20 of one of the mobile devices 18 to theMAP server 12 according to another embodiment of the present disclosure.This discussion is equally applicable to user profiles of the users 20of the other mobile devices 18. First, an authentication process isperformed (step 1100). For authentication, in this embodiment, themobile device 18 authenticates with the MAP server 12 (step 1100A), andthe MAP server 12 authenticates with the profile server 14 (step 1100B).Preferably, authentication is performed using OpenID or similartechnology. However, authentication may alternatively be performed usingseparate credentials (e.g., username and password) of the user 20 foraccess to the MAP server 12 and the profile server 14. Assuming thatauthentication is successful, the profile server 14 returns anauthentication succeeded message to the MAP server 12 (step 1100C), andthe MAP server 12 returns an authentication succeeded message to the MAPclient 30 of the mobile device 18 (step 1100D).

At some point after authentication is complete, a user profile processis performed such that a user profile of the user 20 is obtained fromthe profile server 14 and delivered to the MAP server 12 (step 1102). Inthis embodiment, the profile manager 52 of the MAP server 12 sends aprofile request to the profile server 14 (step 1102A). In response, theprofile server 14 returns the user profile of the user 20 to the profilemanager 52 of the MAP server 12 (step 1102B). Note that while in thisembodiment the profile server 14 returns the complete user profile ofthe user 20 to the MAP server 12, in an alternative embodiment, theprofile server 14 may return a filtered version of the user profile ofthe user 20 to the MAP server 12. The profile server 14 may filter theuser profile of the user 20 according to criteria specified by the user20. For example, the user profile of the user 20 may include demographicinformation, general interests, music interests, and movie interests,and the user 20 may specify that the demographic information or somesubset thereof is to be filtered, or removed, before sending the userprofile to the MAP server 12.

Upon receiving the user profile of the user 20, the profile manager 52of the MAP server 12 processes the user profile (step 1102C). Morespecifically, as discussed above, in the preferred embodiment, theprofile manager 52 includes social network handlers for the socialnetwork services supported by the MAP server 12. The social networkhandlers process user profiles to generate user profiles for the MAPserver 12 that include lists of keywords for each of a number of profilecategories, or profile slices.

After processing the user profile of the user 20, the profile manager 52of the MAP server 12 stores the resulting user profile for the user 20(step 1102D). More specifically, in one embodiment, the MAP server 12stores user records for the users 20 in the datastore 64 (FIG. 2). Theuser profile of the user 20 is stored in the user record of the user 20.The user record of the user 20 includes a unique identifier of the user20, the user profile of the user 20, and, as discussed below, a currentlocation of the user 20. Note that the user profile of the user 20 maybe updated as desired. For example, in one embodiment, the user profileof the user 20 is updated by repeating step 1102 each time the user 20activates the MAP application 32.

Note that while the discussion herein focuses on an embodiment where theuser profiles of the users 20 are obtained from the one or more profileservers 14, the user profiles of the users 20 may be obtained in anydesired manner. For example, in one alternative embodiment, the user 20may identify one or more favorite websites. The profile manager 52 ofthe MAP server 12 may then crawl the one or more favorite websites ofthe user 20 to obtain keywords appearing in the one or more favoritewebsites of the user 20. These keywords may then be stored as the userprofile of the user 20.

At some point, a process is performed such that a current location ofthe mobile device 18 and thus a current location of the user 20 isobtained by the MAP server 12 (step 1104). In this embodiment, the MAPapplication 32 of the mobile device 18 obtains the current location ofthe mobile device 18 from the location function 36 of the mobile device18. The MAP application 32 then provides the current location of theuser 20 of the mobile device 18 to the location server 16 (step 1104A).Note that step 1104A may be repeated periodically or in response tochanges in the location of the mobile device 18 in order to providelocation updates for the user 20 to the MAP server 12. The locationserver 16 then provides the current location of the user 20 to the MAPserver 12 (step 1104B). The location server 16 may provide the currentlocation of the user 20 to the MAP server 12 automatically in responseto receiving the current location of the user 20 from the mobile device18 or in response to a request from the MAP server 12.

In response to receiving the current location of the mobile device 18,the location manager 54 of the MAP server 12 stores the current locationof the mobile device 18 as the current location of the user 20 (step1104C). More specifically, in one embodiment, the current location ofthe user 20 is stored in the user record of the user 20 maintained inthe datastore 64 of the MAP server 12. Note that, in the preferredembodiment, only the current location of the user 20 is stored in theuser record of the user 20. In this manner, the MAP server 12 maintainsprivacy for the user 20 since the MAP server 12 does not maintain ahistorical record of the location of the user 20. As discussed below indetail, historical data maintained by the MAP server 12 is preferablyanonymized in order to maintain the privacy of the users 20.

As discussed above, the use of the location server 16 is particularlybeneficial when the mobile device 18 does not permit backgroundprocesses. As such, if the mobile device 18 does not permit backgroundprocesses, the MAP application 32 will not provide location updates forthe user 20 to the location server 16 unless the MAP application 32 isactive. However, other applications running on the mobile device 18 (orsome other device of the user 20) may provide location updates to thelocation server 16 for the user 20 when the MAP application 32 is notactive. This is illustrated in step 1106 where the location server 16receives a location update for the user 20 from another applicationrunning on the mobile device 18 or an application running on anotherdevice of the user 20 (step 1106A). The location server 16 then providesthe location update for the user 20 to the MAP server 12 (step 1106B).In response, the location manager 54 updates and stores the currentlocation of the user 20 in the user record of the user 20 (step 1106C).In this manner, the MAP server 12 is enabled to obtain location updatesfor the user 20 even when the MAP application 32 is not active at themobile device 18.

FIG. 6 begins a discussion of the operation of the crowd analyzer 58 toform crowds of users according to one embodiment of the presentdisclosure. Specifically, FIG. 6 illustrates exemplary data records thatmay be used to represent crowds, users, crowd snapshots used for crowdtracking, and anonymous users according to one embodiment of the presentdisclosure. As illustrated, for each crowd created by the crowd analyzer58 of the MAP server 12, a corresponding crowd record 72 is created andstored in the datastore 64 of the MAP server 12. The crowd record 72 fora crowd includes a users field, a North-East (NE) corner field, aSouth-West (SW) corner field, a center field, a crowd snapshots field, asplit from field, and a combined into field. The users field stores aset or list of user records 74 corresponding to a subset of the users 20that are currently in the crowd. The NE corner field stores a locationcorresponding to a NE corner of a bounding box for the crowd. The NEcorner may be defined by latitude and longitude coordinates andoptionally an altitude. Similarly, the SW corner field stores a locationof a SW corner of the bounding box for the crowd. Like the NE corner,the SW corner may be defined by latitude and longitude coordinates andoptionally an altitude. Together, the NE corner and the SW corner definea bounding box for the crowd, where the edges of the bounding box passthrough the current locations of the outermost users 20 in the crowd.The center field stores a location corresponding to a center of thecrowd. The center of the crowd may be defined by latitude and longitudecoordinates and optionally an altitude. The center of the crowd may becomputed based on the current locations of the users 20 in the crowdusing a center of mass algorithm. Together, the NE corner, the SWcorner, and the center of the crowd form spatial information definingthe location of the crowd. Note, however, that the spatial informationdefining the location of the crowd may include additional or alternativeinformation depending on the particular implementation. The crowdsnapshots field stores a list of crowd snapshot records 76 correspondingto crowd snapshots for the crowd created and stored over time. Asdiscussed below in detail, the split from field may be used to store areference to a crowd record corresponding to another crowd from whichthe crowd split, and the combined into field may be used to store areference to a crowd record corresponding to another crowd into whichthe crowd has been merged.

Each of the user records 74 includes an ID field, a location field, aprofile field, a crowd field, and a previous crowd field. The ID fieldstores a unique ID for the user 20 represented by the user record 74.The location field stores the current location of the user 20, which maybe defined by latitude and longitude coordinates and optionally analtitude. The profile field stores the user profile of the user 20,which may be defined as a list of keywords for one or more profilecategories. The crowd field is used to store a reference to a crowdrecord of a crowd of which the user 20 is currently a member. Theprevious crowd field may be used to store a reference to a crowd recordof a crowd of which the user 20 was previously a member.

Each of the crowd snapshot records 76 includes an anonymous users field,a NE corner field, a SW corner field, a center field, a sample timefield, and a vertices field. The anonymous users field stores a set orlist of anonymous user records 78, which are anonymized versions of userrecords for the users 20 that are in the crowd at a time the crowdsnapshot was created. The NE corner field stores a locationcorresponding to a NE corner of a bounding box for the crowd at the timethe crowd snapshot was created. The NE corner may be defined by latitudeand longitude coordinates and optionally an altitude. Similarly, the SWcorner field stores a location of a SW corner of the bounding box forthe crowd at the time the crowd snapshot was created. Like the NEcorner, the SW corner may be defined by latitude and longitudecoordinates and optionally an altitude. The center field stores alocation corresponding to a center of the crowd at the time the crowdsnapshot was created. The center of the crowd may be defined by latitudeand longitude coordinates and optionally an altitude. Together, the NEcorner, the SW corner, and the center of the crowd form spatialinformation defining the location of the crowd at the time the crowdsnapshot was created. Note, however, that the spatial informationdefining the location of the crowd at the time the crowd snapshot wascreated may include additional or alternative information depending onthe particular implementation. The sample time field stores a timestampindicating a time at which the crowd snapshot was created. The timestamppreferably includes a date and a time of day at which the crowd snapshotwas created. The vertices field stores locations of a number of theusers 20 in the crowd at the time the crowd snapshot was created thatdefine an actual outer boundary of the crowd (e.g., as a polygon) at thetime the crowd snapshot was created. Note that the actual outer boundaryof a crowd may be used to show the location of the crowd when displayedto a user.

Each of the anonymous user records 78 includes an anonymous ID field anda profile field. The anonymous ID field stores an anonymous user ID,which is preferably a unique user ID that is not tied, or linked, backto any of the users 20 and particularly not tied back to the user 20 orthe user record 74 for which the anonymous user record 78 has beencreated. In one embodiment, the anonymous user records 78 for a crowdsnapshot record 76 are anonymized versions of the user records 74 of theusers in the crowd at the time the crowd snapshot was created. Theprofile field stores the anonymized user profile of the anonymous user,which may be defined as a list of keywords for one or more profilecategories.

FIGS. 7A through 7D illustrate one embodiment of a spatial crowdformation process that may be performed by the crowd analyzer 58 toenable a crowd tracking feature according to one embodiment of thepresent disclosure. In this embodiment, the spatial crowd formationprocess is triggered in response to receiving a location update for oneof the users 20 and is preferably repeated for each location updatereceived for any one of the users 20. As such, first, the crowd analyzer58 receives a location update, or a new location, for one of the users20 (step 1200). In response, the crowd analyzer 58 retrieves an oldlocation of the user 20, if any (step 1202). The old location is thecurrent location of the user 20 prior to receiving the new location ofthe user 20. The crowd analyzer 58 then creates a new bounding box of apredetermined size centered at or otherwise encompassing the newlocation of the user 20 (step 1204) and an old bounding box of apredetermined size centered at or otherwise encompassing the oldlocation of the user 20, if any (step 1206). The predetermined size ofthe new and old bounding boxes may be any desired size. As one example,the predetermined size of the new and old bounding boxes is 40 meters by40 meters. Note that if the user 20 does not have an old location (i.e.,the location received in step 1200 is the first location received forthe user 20), then the old bounding box is essentially null. Also notethat while bounding “boxes” are used in this example, the boundingregions may be of any desired shape.

Next, the crowd analyzer 58 determines whether the new and old boundingboxes overlap (step 1208). If so, the crowd analyzer 58 creates abounding box encompassing the new and old bounding boxes (step 1210).For example, if the new and old bounding boxes are 40×40 meter regionsand a 1×1 meter square at the northeast corner of the new bounding boxoverlaps a 1×1 meter square at the southwest corner of the old boundingbox, the crowd analyzer 58 may create a 79×79 meter square bounding boxencompassing both the new and old bounding boxes.

The crowd analyzer 58 then determines the individual users and crowdsrelevant to the bounding box created in step 1210 (step 1212). Note thatthe crowds relevant to the bounding box are pre-existing crowdsresulting from previous iterations of the spatial crowd formationprocess. In this embodiment, the crowds relevant to the bounding box arecrowds having crowd bounding boxes that are within or overlap thebounding box established in step 1210. Alternatively, the crowdsrelevant to the bounding box may be crowds having crowd centers locatedwithin the bounding box or crowds having at least one user currentlylocated within the bounding box. In order to determine the relevantcrowds, the crowd analyzer 58 queries the datastore 64 of the MAP server12 to obtain crowd records for crowds that are within or overlap thebounding box established in step 1210. The individual users relevant tothe bounding box are any of the users 20 that are currently locatedwithin the bounding box and are not already members of a crowd. In orderto identify the relevant individual users, the crowd analyzer 58 queriesthe datastore 64 of the MAP server 12 for the user records 74 of theusers 20 that are currently located in the bounding box created in step1210 and are not already members of a crowd. Next, the crowd analyzer 58computes an optimal inclusion distance for individual users based onuser density within the bounding box (step 1214). More specifically, inone embodiment, the optimal inclusion distance for individuals, which isalso referred to herein as an initial optimal inclusion distance, is setaccording to the following equation:

${{{initial\_ optimal}{\_ inclusion}{\_ dist}} = {a \cdot \sqrt{\frac{A_{{Bounding}\; {Box}}}{{number\_ of}{\_ users}}}}},$

where a is a number between 0 and 1, A_(BoundingBox) is an area of thebounding box, and number_of_users is the total number of users in thebounding box. The total number of users in the bounding box includesboth individual users that are not already in a crowd and users that arealready in a crowd. In one embodiment, a is ⅔.

The crowd analyzer 58 then creates a crowd of one user for eachindividual user within the bounding box established in step 1210 that isnot already included in a crowd and sets the optimal inclusion distancefor those crowds to the initial optimal inclusion distance (step 1216).The crowds created for the individual users are temporary crowds createdfor purposes of performing the crowd formation process. At this point,the process proceeds to FIG. 7B where the crowd analyzer 58 analyzes thecrowds in the bounding box established in step 1210 to determine whetherany of the crowd members (i.e., users in the crowds) violate the optimalinclusion distance of their crowds (step 1218). Any crowd member thatviolates the optimal inclusion distance of his or her crowd is thenremoved from that crowd and the previous crowd fields in thecorresponding user records 74 are set (step 1220). More specifically, inthis embodiment, a member is removed from a crowd by removing the userrecord 74 of the member from the set or list of user records in thecrowd record 72 of the crowd and setting the previous crowd stored inthe user record 74 of the member to the crowd from which the member hasbeen removed. The crowd analyzer 58 then creates a crowd of one user foreach of the users 20 removed from their crowds in step 1220 and sets theoptimal inclusion distance for the newly created crowds to the initialoptimal inclusion distance (step 1222).

Next, the crowd analyzer 58 determines the two closest crowds in thebounding box (step 1224) and a distance between the two closest crowds(step 1226). The distance between the two closest crowds is the distancebetween the crowd centers of the two closest crowds, which are stored inthe crowd records for the two closest crowds. The crowd analyzer 58 thendetermines whether the distance between the two closest crowds is lessthan the optimal inclusion distance of a larger of the two closestcrowds (step 1228). If the two closest crowds are of the same size(i.e., have the same number of users), then the optimal inclusiondistance of either of the two closest crowds may be used. Alternatively,if the two closest crowds are of the same size, the optimal inclusiondistances of both of the two closest crowds may be used such that thecrowd analyzer 58 determines whether the distance between the twoclosest crowds is less than the optimal inclusion distances of both ofthe crowds. As another alternative, if the two closest crowds are of thesame size, the crowd analyzer 58 may compare the distance between thetwo closest crowds to an average of the optimal inclusion distances ofthe two crowds.

If the distance between the two closest crowds is greater than theoptimal inclusion distance, the process proceeds to step 1240. However,if the distance between the two closest crowds is less than the optimalinclusion distance, the two crowds are merged (step 1230). The manner inwhich the two crowds are merged differs depending on whether the twocrowds are pre-existing crowds or temporary crowds created for thespatial crowd formation process. If both crowds are pre-existing crowds,one of the two crowds is selected as a non-surviving crowd and the otheris selected as a surviving crowd. If one crowd is larger than the other,the smaller crowd is selected as the non-surviving crowd and the largercrowd is selected as a surviving crowd. If the two crowds are of thesame size, one of the crowds is selected as the surviving crowd and theother crowd is selected as the non-surviving crowd using any desiredtechnique. The non-surviving crowd is then merged into the survivingcrowd by adding the set or list of user records for the non-survivingcrowd to the set or list of user records for the surviving crowd andsetting the merged into field of the non-surviving crowd to a referenceto the crowd record of the surviving crowd. In addition, the crowdanalyzer 58 sets the previous crowd fields of the user records 74 in theset or list of user records from the non-surviving crowd to a referenceto the crowd record 72 of the non-surviving crowd.

If one of the crowds is a temporary crowd and the other crowd is apre-existing crowd, the temporary crowd is selected as the non-survivingcrowd, and the pre-existing crowd is selected as the surviving crowd.The non-surviving crowd is then merged into the surviving crowd byadding the set or list of user records from the crowd record 72 of thenon-surviving crowd to the set or list of user records in the crowdrecord 72 of the surviving crowd. However, since the non-surviving crowdis a temporary crowd, the previous crowd field(s) of the user record(s)74 of the user(s) 20 in the non-surviving crowd are not set to areference to the crowd record 72 of the non-surviving crowd. Similarly,the crowd record 72 of the temporary crowd may not have a merged intofield, but, if it does, the merged into field is not set to a referenceto the surviving crowd.

If both the crowds are temporary crowds, one of the two crowds isselected as a non-surviving crowd and the other is selected as asurviving crowd. If one crowd is larger than the other, the smallercrowd is selected as the non-surviving crowd and the larger crowd isselected as a surviving crowd. If the two crowds are of the same size,one of the crowds is selected as the surviving crowd and the other crowdis selected as the non-surviving crowd using any desired technique. Thenon-surviving crowd is then merged into the surviving crowd by addingthe set or list of user records for the non-surviving crowd to the setor list of user records for the surviving crowd. However, since thenon-surviving crowd is a temporary crowd, the previous crowd field(s) ofthe user record(s) 74 of the user(s) 20 in the non-surviving crowd arenot set to a reference to the crowd record 72 of the non-survivingcrowd. Similarly, the crowd record 72 of the temporary crowd may nothave a merged into field, but, if it does, the merged into field is notset to a reference to the surviving crowd.

Next, the crowd analyzer 58 removes the non-surviving crowd (step 1232).In this embodiment, the manner in which the non-surviving crowd isremoved depends on whether the non-surviving crowd is a pre-existingcrowd or a temporary crowd. If the non-surviving crowd is a pre-existingcrowd, the removal process is performed by removing or nulling the usersfield, the NE corner field, the SW corner field, and the center field ofthe crowd record 72 of the non-surviving crowd. In this manner, thespatial information for the non-surviving crowd is removed from thecorresponding crowd record such that the non-surviving or removed crowdwill no longer be found in response to spatial-based queries on thedatastore 64. However, the crowd snapshots for the non-surviving crowdare still available via the crowd record 72 for the non-surviving crowd.In contrast, if the non-surviving crowd is a temporary crowd, the crowdanalyzer 58 may remove the crowd by deleting the corresponding crowdrecord 72.

The crowd analyzer 58 also computes a new crowd center for the survivingcrowd (step 1234). Again, a center of mass algorithm may be used tocompute the crowd center of a crowd. In addition, a new optimalinclusion distance for the surviving crowd is computed (step 1236). Inone embodiment, the new optimal inclusion distance for the resultingcrowd is computed as:

$\begin{matrix}{{{average} = {\frac{1}{n + 1} \cdot \left( {{{initial\_ optimal}{\_ inclusion}{\_ dist}} + {\sum\limits_{i = 1}^{n}d_{i}}} \right)}},} & \; \\{{{{optimal\_ inclusion}{\_ dist}} = {{average} + \sqrt{\left( {\frac{1}{n} \cdot {\sum\limits_{i = 1}^{n}\left( {d_{i} - {average}} \right)^{2}}} \right)}}},} & \;\end{matrix}$

where n is the number of users in the crowd and d, is a distance betweenthe ith user and the crowd center. In other words, the new optimalinclusion distance is computed as the average of the initial optimalinclusion distance and the distances between the users in the crowd andthe crowd center plus one standard deviation.

At this point, the crowd analyzer 58 determines whether a maximum numberof iterations have been performed (step 1238). The maximum number ofiterations is a predefined number that ensures that the crowd formationprocess does not indefinitely loop over steps 1218 through 1236 or loopover steps 1218 through 1236 more than a desired maximum number oftimes. If the maximum number of iterations has not been reached, theprocess returns to step 1218 and is repeated until either the distancebetween the two closest crowds is not less than the optimal inclusiondistance of the larger crowd or the maximum number of iterations hasbeen reached. At that point, the crowd analyzer 58 removes crowds withless than three users, or members (step 1240) and the process ends. Asdiscussed above, in this embodiment, the manner in which a crowd isremoved depends on whether the crowd is a pre-existing crowd or atemporary crowd. If the crowd is a pre-existing crowd, a removal processis performed by removing or nulling the users field, the NE cornerfield, the SW corner field, and the center field of the crowd record 72of the crowd. In this manner, the spatial information for the crowd isremoved from the corresponding crowd record 72 such that the crowd willno longer be found in response to spatial-based queries on the datastore64. However, the crowd snapshots for the crowd are still available viathe crowd record 72 for the crowd. In contrast, if the crowd is atemporary crowd, the crowd analyzer 58 may remove the crowd by deletingthe corresponding crowd record 72. In this manner, crowds having lessthan three members are removed in order to maintain privacy ofindividuals as well as groups of two users (e.g., a couple). Note thatin this example, the minimum number of users required for a crowd is 3.However, the present disclosure is not limited thereto. The minimumnumber of users for a crowd may be any desired number greater than orequal to 2.

Returning to step 1208 in FIG. 7A, if the new and old bounding boxes donot overlap, the process proceeds to FIG. 7C and the bounding box to beprocessed is set to the old bounding box (step 1242). In general, thecrowd analyzer 58 then processes the old bounding box in much that samemanner as described above with respect to steps 1212 through 1240. Morespecifically, the crowd analyzer 58 determines the individual users andcrowds relevant to the bounding box (step 1244). Next, the crowdanalyzer 58 computes an optimal inclusion distance for individual usersbased on user density within the bounding box (step 1246). The optimalinclusion distance may be computed as described above with respect tostep 1214.

The crowd analyzer 58 then creates a crowd of one user for eachindividual user within the bounding box that is not already included ina crowd and sets the optimal inclusion distance for the crowds to theinitial optimal inclusion distance (step 1248). The crowds created forthe individual users are temporary crowds created for purposes ofperforming the crowd formation process. At this point, the crowdanalyzer 58 analyzes the crowds in the bounding box to determine whetherany crowd members (i.e., users in the crowds) violate the optimalinclusion distance of their crowds (step 1250). Any crowd member thatviolates the optimal inclusion distance of his or her crowd is thenremoved from that crowd and the previous crowd fields in thecorresponding user records 74 are set (step 1252). More specifically, inthis embodiment, a member is removed from a crowd by removing the userrecord 74 of the member from the set or list of user records in thecrowd record 72 of the crowd and setting the previous crowd stored inthe user record 74 of the member to the crowd from which the member hasbeen removed. The crowd analyzer 58 then creates a crowd for each of theusers 20 removed from their crowds in step 1252 and sets the optimalinclusion distance for the newly created crowds to the initial optimalinclusion distance (step 1254).

Next, the crowd analyzer 58 determines the two closest crowds in thebounding box (step 1256) and a distance between the two closest crowds(step 1258). The distance between the two closest crowds is the distancebetween the crowd centers of the two closest crowds. The crowd analyzer58 then determines whether the distance between the two closest crowdsis less than the optimal inclusion distance of a larger of the twoclosest crowds (step 1260). If the two closest crowds are of the samesize (i.e., have the same number of users), then the optimal inclusiondistance of either of the two closest crowds may be used. Alternatively,if the two closest crowds are of the same size, the optimal inclusiondistances of both of the two closest crowds may be used such that thecrowd analyzer 58 determines whether the distance between the twoclosest crowds is less than the optimal inclusion distances of both ofthe two closest crowds. As another alternative, if the two closestcrowds are of the same size, the crowd analyzer 58 may compare thedistance between the two closest crowds to an average of the optimalinclusion distances of the two closest crowds.

If the distance between the two closest crowds is greater than theoptimal inclusion distance, the process proceeds to step 1272. However,if the distance between the two closest crowds is less than the optimalinclusion distance, the two crowds are merged (step 1262). The manner inwhich the two crowds are merged differs depending on whether the twocrowds are pre-existing crowds or temporary crowds created for thespatial crowd formation process. If both crowds are pre-existing crowds,one of the two crowds is selected as a non-surviving crowd and the otheris selected as a surviving crowd. If one crowd is larger than the other,the smaller crowd is selected as the non-surviving crowd and the largercrowd is selected as a surviving crowd. If the two crowds are of thesame size, one of the crowds is selected as the surviving crowd and theother crowd is selected as the non-surviving crowd using any desiredtechnique. The non-surviving crowd is then merged into the survivingcrowd by adding the set or list of user records for the non-survivingcrowd to the set or list of user records for the surviving crowd andsetting the merged into field of the non-surviving crowd to a referenceto the crowd record 72 of the surviving crowd. In addition, the crowdanalyzer 58 sets the previous crowd fields of the set or list of userrecords from the non-surviving crowd to a reference to the crowd record72 of the non-surviving crowd.

If one of the crowds is a temporary crowd and the other crowd is apre-existing crowd, the temporary crowd is selected as the non-survivingcrowd, and the pre-existing crowd is selected as the surviving crowd.The non-surviving crowd is then merged into the surviving crowd byadding the user records 74 from the set or list of user records from thecrowd record 72 of the non-surviving crowd to the set or list of userrecords in the crowd record 72 of the surviving crowd. However, sincethe non-surviving crowd is a temporary crowd, the previous crowdfield(s) of the user record(s) 74 of the user(s) 20 in the non-survivingcrowd are not set to a reference to the crowd record 72 of thenon-surviving crowd. Similarly, the crowd record 72 of the temporarycrowd may not have a merged into field, but, if it does, the merged intofield is not set to a reference to the surviving crowd.

If both the crowds are temporary crowds, one of the two crowds isselected as a non-surviving crowd and the other is selected as asurviving crowd. If one crowd is larger than the other, the smallercrowd is selected as the non-surviving crowd and the larger crowd isselected as a surviving crowd. If the two crowds are of the same size,one of the crowds is selected as the surviving crowd and the other crowdis selected as the non-surviving crowd using any desired technique. Thenon-surviving crowd is then merged into the surviving crowd by addingthe set or list of user records for the non-surviving crowd to the setor list of user records for the surviving crowd. However, since thenon-surviving crowd is a temporary crowd, the previous crowd field(s) ofthe user record(s) 74 of the user(s) 20 in the non-surviving crowd arenot set to a reference to the crowd record 72 of the non-survivingcrowd. Similarly, the crowd record 72 of the temporary crowd may nothave a merged into field, but, if it does, the merged into field is notset to a reference to the surviving crowd.

Next, the crowd analyzer 58 removes the non-surviving crowd (step 1264).In this embodiment, the manner in which the non-surviving crowd isremoved depends on whether the non-surviving crowd is a pre-existingcrowd or a temporary crowd. If the non-surviving crowd is a pre-existingcrowd, the removal process is performed by removing or nulling the usersfield, the NE corner field, the SW corner field, and the center field ofthe crowd record 72 of the non-surviving crowd. In this manner, thespatial information for the non-surviving crowd is removed from thecorresponding crowd record 72 such that the non-surviving or removedcrowd will no longer be found in response to spatial-based queries onthe datastore 64. However, the crowd snapshots for the non-survivingcrowd are still available via the crowd record 72 for the non-survivingcrowd. In contrast, if the non-surviving crowd is a temporary crowd, thecrowd analyzer 58 may remove the crowd by deleting the correspondingcrowd record 72.

The crowd analyzer 58 also computes a new crowd center for the survivingcrowd (step 1266). Again, a center of mass algorithm may be used tocompute the crowd center of a crowd. In addition, a new optimalinclusion distance for the surviving crowd is computed (step 1268). Inone embodiment, the new optimal inclusion distance for the survivingcrowd is computed in the manner described above with respect to step1234.

At this point, the crowd analyzer 58 determines whether a maximum numberof iterations have been performed (step 1270). If the maximum number ofiterations has not been reached, the process returns to step 1250 and isrepeated until either the distance between the two closest crowds is notless than the optimal inclusion distance of the larger crowd or themaximum number of iterations has been reached. At that point, the crowdanalyzer 58 removes crowds with less than three users, or members (step1272). As discussed above, in this embodiment, the manner in which acrowd is removed depends on whether the crowd is a pre-existing crowd ora temporary crowd. If the crowd is a pre-existing crowd, a removalprocess is performed by removing or nulling the users field, the NEcorner field, the SW corner field, and the center field of the crowdrecord 72 of the crowd. In this manner, the spatial information for thecrowd is removed from the corresponding crowd record 72 such that thecrowd will no longer be found in response to spatial-based queries onthe datastore 64. However, the crowd snapshots for the crowd are stillavailable via the crowd record 72 for the crowd. In contrast, if thecrowd is a temporary crowd, the crowd analyzer 58 may remove the crowdby deleting the corresponding crowd record 72. In this manner, crowdshaving less than three members are removed in order to maintain privacyof individuals as well as groups of two users (e.g., a couple). Again,note that in this example the minimum number of users required for acrowd is 3. However, the present disclosure is not limited thereto. Theminimum number of users for a crowd may be any desired number greaterthan or equal to 2.

The crowd analyzer 58 then determines whether the crowd formationprocess for the new and old bounding boxes is done (step 1274). In otherwords, the crowd analyzer 58 determines whether both the new and oldbounding boxes have been processed. If not, the bounding box is set tothe new bounding box (step 1276), and the process returns to step 1244and is repeated for the new bounding box. Once both the new and oldbounding boxes have been processed, the crowd formation process ends.

FIGS. 8A through 8D graphically illustrate the crowd formation processof FIGS. 7A through 7D for a scenario where the crowd formation processis triggered by a location update for one of the users 20 having no oldlocation. In this scenario, the crowd analyzer 58 creates a new boundingbox 80 for the new location of the user 20, and the new bounding box 80is set as the bounding box to be processed for crowd formation. Then, asillustrated in FIG. 8A, the crowd analyzer 58 identifies all individualusers currently located within the bounding box 80 and all crowdslocated within or overlapping the bounding box 80. In this example,crowd 82 is an existing crowd relevant to the bounding box 80. Crowdsare indicated by dashed circles, crowd centers are indicated bycross-hairs (+), and users are indicated as dots. Next, as illustratedin FIG. 8B, the crowd analyzer 58 creates crowds 84 through 88 of oneuser for the individual users, and the optimal inclusion distances ofthe crowds 84 through 88 are set to the initial optimal inclusiondistance. As discussed above, the initial optimal inclusion distance iscomputed by the crowd analyzer 58 based on a density of users within thebounding box 80.

The crowd analyzer 58 then identifies the two closest crowds 84 and 86in the bounding box 80 and determines a distance between the two closestcrowds 84 and 86. In this example, the distance between the two closestcrowds 84 and 86 is less than the optimal inclusion distance. As such,the two closest crowds 84 and 86 are merged and a new crowd center andnew optimal inclusion distance are computed, as illustrated in FIG. 8C.The crowd analyzer 58 then repeats the process such that the two closestcrowds 84 and 88 in the bounding box 80 are merged, as illustrated inFIG. 8D. At this point, the distance between the two closest crowds 82and 84 is greater than the appropriate optimal inclusion distance. Assuch, the crowd formation process is complete.

FIGS. 9A through 9F graphically illustrate the crowd formation processof FIGS. 7A through 7D for a scenario where the new and old boundingboxes overlap. As illustrated in FIG. 9A, one of the users 20 moves froman old location to a new location, as indicated by an arrow. The crowdanalyzer 58 receives a location update for the user 20 giving the newlocation of the user 20. In response, the crowd analyzer 58 creates anold bounding box 90 for the old location of the user and a new boundingbox 92 for the new location of the user. Crowd 94 exists in the oldbounding box 90, and crowd 96 exists in the new bounding box 92.

Since the old bounding box 90 and the new bounding box 92 overlap, thecrowd analyzer 58 creates a bounding box 98 that encompasses both theold bounding box 90 and the new bounding box 92, as illustrated in FIG.9B. In addition, the crowd analyzer 58 creates crowds 100 through 106for individual users currently located within the bounding box 98. Theoptimal inclusion distances of the crowds 100 through 106 are set to theinitial optimal inclusion distance computed by the crowd analyzer 58based on the density of users in the bounding box 98.

Next, the crowd analyzer 58 analyzes the crowds 94, 96, and 100 through106 to determine whether any members of the crowds 94, 96, and 100through 106 violate the optimal inclusion distances of the crowds 94,96, and 100 through 106. In this example, as a result of the userleaving the crowd 94 and moving to his new location, both of theremaining members of the crowd 94 violate the optimal inclusion distanceof the crowd 94. As such, the crowd analyzer 58 removes the remainingusers 20 from the crowd 94 and creates crowds 108 and 110 of one usereach for those users, as illustrated in FIG. 9C.

The crowd analyzer 58 then identifies the two closest crowds in thebounding box 98, which in this example are the crowds 104 and 106. Next,the crowd analyzer 58 computes a distance between the two crowds 104 and106. In this example, the distance between the two crowds 104 and 106 isless than the initial optimal inclusion distance and, as such, the twocrowds 104 and 106 are merged. In this example, the crowd analyzer 58merges the crowd 106 into the crowd 104, as illustrated in FIG. 9D. Anew crowd center and new optimal inclusion distance are then computedfor the crowd 104.

At this point, the crowd analyzer 58 repeats the process and determinesthat the crowds 96 and 102 are now the two closest crowds. In thisexample, the distance between the two crowds 96 and 102 is less than theoptimal inclusion distance of the larger of the two crowds 96 and 102,which is the crowd 96. As such, the crowd 102 is merged into the crowd96 and a new crowd center and optimal inclusion distance are computedfor the crowd 96, as illustrated in FIG. 9E. At this point, there are notwo crowds closer than the optimal inclusion distance of the larger ofthe two crowds. As such, the crowd analyzer 58 discards any crowdshaving less than three members, as illustrated in FIG. 9F. In thisexample, the crowds 100, 104, 108, and 110 have less than three membersand are therefore removed. The crowd 96 has three or more members and,as such, is not removed. At this point, the crowd formation process iscomplete.

FIGS. 10A through 10E graphically illustrate the crowd formation processof FIGS. 7A through 7D in a scenario where the new and old boundingboxes do not overlap. As illustrated in FIG. 10A, in this example, theuser 20 moves from an old location to a new location. The crowd analyzer58 creates an old bounding box 112 for the old location of the user 20and a new bounding box 114 for the new location of the user 20. Crowds116 and 118 exist in the old bounding box 112, and crowd 120 exists inthe new bounding box 114. In this example, since the old and newbounding boxes 112 and 114 do not overlap, the crowd analyzer 58processes the old and new bounding boxes 112 and 114 separately.

More specifically, as illustrated in FIG. 10B, as a result of themovement of the user 20 from the old location to the new location, theremaining users 20 in the crowd 116 no longer satisfy the optimalinclusion distance for the crowd 116. As such, the remaining users 20 inthe crowd 116 are removed from the crowd 116, and crowds 122 and 124 ofone user each are created for the removed users as shown in FIG. 10C. Inthis example, no two crowds in the old bounding box 112 are close enoughto be combined. As such, since the crowds 122 and 124 do not have atleast 3 users, the crowds 122 and 124 are discarded, and processing ofthe old bounding box 112 is complete. The crowd analyzer 58 thenproceeds to process the new bounding box 114.

As illustrated in FIG. 10D, processing of the new bounding box 114begins by the crowd analyzer 58 creating a crowd 126 of one user for theuser 20. The crowd analyzer 58 then identifies the crowds 120 and 126 asthe two closest crowds in the new bounding box 114 and determines adistance between the two crowds 120 and 126. In this example, thedistance between the two crowds 120 and 126 is less than the optimalinclusion distance of the larger crowd, which is the crowd 120. As such,the crowd analyzer 58 merges the crowd 126 into the crowd 120, asillustrated in FIG. 10E. A new crowd center and new optimal inclusiondistance are then computed for the crowd 120. At this point, the crowdformation process is complete.

FIG. 11 illustrates a process for creating crowd snapshots according toone embodiment of the present disclosure. In this embodiment, after thespatial crowd formation process of FIGS. 7A through 7D is performed inresponse to a location update for one of the users 20, the crowdanalyzer 58 detects crowd change events, if any, for the relevant crowds(step 1300). The relevant crowds are pre-existing crowds that arerelevant to the bounding region(s) processed during the spatial crowdformation process in response to the location update for the user 20.The crowd analyzer 58 may detect crowd change events by comparing thecrowd records 72 of the relevant crowds before and after performing thespatial crowd formation process in response to the location update forthe user 20. The crowd change events may be a change in the users 20 inthe crowd, a change to a location of one of the users 20 within thecrowd, or a change in the spatial information for the crowd (e.g., theNE corner, the SW corner, or the crowd center). Note that if multiplecrowd change events are detected for a single crowd, then those crowdchange events are preferably consolidated into a single crowd changeevent.

Next, the crowd analyzer 58 determines whether there are any crowdchange events (step 1302). If not, the process ends. Otherwise, thecrowd analyzer 58 gets the next crowd change event (step 1304) andgenerates a crowd snapshot for a corresponding crowd (step 1306). Morespecifically, the crowd change event identifies the crowd record 72stored for the crowd for which the crowd change event was detected. Acrowd snapshot is then created for that crowd by creating a new crowdsnapshot record 76 for the crowd and adding the new crowd snapshotrecord 76 to the list of crowd snapshots stored in the crowd record 72for the crowd. As discussed above, in this embodiment, the crowdsnapshot record 76 includes a set or list of anonymous user records 78,which are an anonymized version of the user records 74 for the users 20in the crowd at the current time. In addition, the crowd snapshot recordincludes the NE corner, the SW corner, and the center of the crowd atthe current time as well as a timestamp defining the current time as thesample time at which the crowd snapshot record 76 was created. Lastly,locations of the users 20 in the crowd that define the outer boundary ofthe crowd at the current time are stored in the crowd snapshot record 76as the vertices of the crowd. After creating the crowd snapshot, thecrowd analyzer 58 determines whether there are any more crowd changeevents (step 1308). If so, the process returns to step 1304 and isrepeated for the next crowd change event. Once all of the crowd changeevents are processed, the process ends.

FIGS. 12 through 14D describe the operation of the fragmented adfunction 62 of the MAP server 12. Specifically, FIG. 12 illustrates thedelivery and utilization of a fragmented advertisement according to oneembodiment of the present disclosure. As illustrated, the fragmented adfunction 62 of the MAP server 12 first identifies a crowd of users forfragmented advertisement delivery (step 1400). The crowd may beidentified based on one or more criteria such as, but not limited to,the location of the crowd, historical information regarding the crowd,historical information regarding the users 20 currently in the crowd, orthe like. The historical information regarding the crowd may include anamount of time that the crowd has existed and/or an amount of time thatthe crowd has been located at its current location or near its currentlocation as determined by, for example, the crowd snapshots stored forthe crowd. The historical information regarding the users 20 currentlyin the crowd may include information indicating whether the users 20 inthe crowd have previously participated in a fragmented advertisement. Inthis embodiment, the criteria used to identify the crowd may besystem-defined criteria that are used for all advertisers oradvertiser-defined criteria defined for a particular advertiser. Notethat if the criteria are advertiser-defined criteria and there aremultiple advertisers, then the process of FIG. 12 may be performed foreach advertiser.

As an example, the criteria used to identify the crowd in step 1400 maybe system-defined criteria stating that any crowd that is located withina defined distance (e.g., 1 mile) from any one of a number of definedPOIs (e.g., a list of POIs for which the fragmented ad function 62 hascorresponding fragmented advertisements) and has existed for at least adefined threshold amount of time (e.g., 30 minutes) is identified as acrowd for delivery of a fragmented advertisement. Using these criteria,the fragmented ad function 62 queries the datastore 64 of the MAP server12 for a crowd that has corresponding crowd record 72 that indicatesthat the crowd is located within the defined distance from any of thedefined POIs and has existed for at least the defined threshold amountof time. The resulting crowd is identified as the crowd for fragmentedadvertisement delivery. Note however that if the query results in morethan one crowd that satisfies the criteria, then the following steps ofFIG. 12 (i.e., steps 1402-1426) may be performed for each of thosecrowds. Alternatively, one of the crowds may be selected using anysuitable technique. For example, the crowd having the most users thathave previously participated in a fragmented advertisement may beselected.

Once the crowd for the fragmented advertisement delivery process isidentified in step 1400, the fragmented ad function 62 of the MAP server12 selects one of the mobile devices 18 of the users 20 currently in theidentified crowd as a master device (step 1402). The master device maybe selected based on historical information regarding the users 20 inthe crowd, device capabilities of the mobile devices 18 of the users 20in the crowd, a degree of similarity between the user profiles of theusers 20 in the crowd to an aggregate profile of the crowd, or the like.The historical information regarding the users 20 in the crowd mayinclude, for each of the users 20 in the crowd:

-   -   information indicating whether the user 20 has previously        participated in a fragmented advertisement such as, for example,        information indicating whether the mobile device 18 of the user        20 has previously been selected as a master device for delivery        of a fragmented advertisement and, if so, whether the user 20        accepted or rejected the fragmented advertisement, or    -   the amount of time that the user 20 has been in the crowd.        Note that the amount of time that the users 20 have been in the        crowd would require non-anonymously recording the users 20 in        the crowd in each crowd snapshot for the crowd or        non-anonymously recording location histories for the users 20.        The device capabilities of the mobile devices 18 of the users 20        in the crowd may include, for each of the mobile devices 18 of        the users 20 in the crowd, information indicating whether the        mobile device 18 has wireless LAN or wireless PAN capabilities        (e.g., IEEE 802.11x or Bluetooth® capabilities) that can be used        to distribute advertisement fragments (see below).

It should also be noted that in some cases one or more of the users 20may have more than one mobile device 18. In this case, one mobile device18 of one of the users 20 is selected as the master device based onhistorical information regarding the users 20 in the crowd, devicecapabilities of the mobile devices 18 of the users 20 in the crowd, adegree of similarity between the user profiles of the users 20 in thecrowd to an aggregate profile of the crowd, or the like. Alternatively,a master user may be selected from the users 20 in the crowd based onhistorical information regarding the users 20 in the crowd. The userdevice 18 of the master user that is to serve as the master device maythen be selected by the master user or selected automatically based onthe device capabilities of the mobile devices 20 of the master user.

The aggregate profile for the crowd is preferably generated by theaggregation engine 60 of the MAP server 12 based on the user profiles ofthe users 20 in the crowd. The aggregate profile of the crowd generallyindicates the aggregate interests of the users 20 in the crowd. Forexample, the aggregate profile for the crowd may include a list ofkeywords appearing in the user profiles of the users 20 in the crowd anda number of user matches for each keyword in the list or a ratio of thenumber of user matches to the total number of users in the crowd foreach keyword in the list. Thus, if the keyword “politics” appears in theuser profiles of three of the users 20 in the crowd, then the aggregateprofile of the crowd may include the keyword “politics” and the value of3 for the number of user matches for the keyword “politics.” For each ofthe users 20 in the crowd, the degree of similarity between the userprofile of the user 20 and the aggregate profile of the crowd may thenbe computed using the number of user matches for the keywords in theaggregate profile of the crowd as weighting factors. For example, thedegree of similarity between the user profile of the user 20 and theaggregate profile of the crowd may be computed as:

${{Similiarity} = \frac{\sum\limits_{i = 1}^{M}\left( {{user\_ matches}_{i} \times {matching\_ keyword}_{i}} \right)}{\sum\limits_{i = 1}^{M}{user\_ matches}_{i}}},$

where Similarity is a value representing the degree of similaritybetween the user profile of the user 20 and the aggregate profile of thecrowd, user_matches_(i) is the number of user matches for the i-thkeyword in the aggregate profile of the crowd, matching_keyword_(i) is 0if the user profile of the user 20 does not include a keyword thatmatches the i-th keyword in the aggregate profile of the crowd or 1 ifthe user profile of the user 20 does include a keyword that matches thei-th keyword in the aggregate profile of the crowd, and M is the numberof keywords in the aggregate profile of the crowd.

In one exemplary embodiment, the master device may be selected asfollows. If none of the mobile devices 18 of the users 20 in the crowdhas previously been selected as a master device for another fragmentedadvertisement and accepted that fragmented advertisement, then themobile device 18 selected as the master device is the mobile device 18that: (1) is the mobile device 18 of the user 20 that has been in thecrowd the longest, (2) has wireless Local Area Network (LAN) and/orwireless Personal Area Network (PAN) capabilities, and (3) is the mobiledevice 18 of the user 20 having a degree of similarity between the userprofile of the user 20 and the aggregate profile of the crowd that is atleast a predefined minimum similarity (e.g., 0.5). If one or more of themobile devices 18 of the users 20 in the crowd has been previouslyselected as a master device for another fragmented advertisement andaccepted that fragmented advertisement, then the mobile device 18selected as the master device is one of those mobile devices 18 that:(1) is the mobile device 18 of the user 20 that has been in the crowdthe longest, (2) has wireless LAN and/or wireless PAN capabilities, and(3) is the mobile device 18 of the user 20 having a degree of similaritybetween the user profile of the user 20 and the aggregate profile of thecrowd that is at least a predefined minimum similarity (e.g., 0.5). Ifonly one of the mobile devices 18 of the users 20 in the crowd has beenpreviously selected as a master device for another fragmentedadvertisement and accepted that fragmented advertisement, then thatmobile device 18 is selected as the master device. Again, note that thisexemplary process for selecting the master device is only one example ofmany processes that may be used to select the master device. Numerousvariations will be apparent to one of ordinary skill in the art uponreading this disclosure.

Once the master device is selected, the fragmented ad function 62 of theMAP server 12 determines a fragmented advertisement to be delivered tothe crowd of users identified in step 1400 (step 1404). In oneembodiment, the fragmented advertisement is selected from a number offragmented advertisements accessible to the fragmented ad function 62based on one or more advertisement selection criteria. The one or moreadvertisement selection criteria include one or more of the following:

-   -   the aggregate profile of the crowd,    -   the user profiles of the users 20 in the crowd,    -   the location of the crowd,    -   time of day,    -   businesses or other POIs in spatial proximity to the crowd,    -   historical information regarding fragmented advertisements        previously delivered to the crowd (e.g., information identifying        any fragmented advertisements previously delivered to the        crowd),    -   advertisement value, and    -   device capabilities of the mobile devices 18 of the users 20 in        the crowd.        Again, the aggregate profile is generally an aggregation of the        user profiles of the users 20 in the crowd. For example, the        aggregate profile of the crowd may include a list of keywords        found in the user profiles of the users 20 in the crowd and a        number of user matches for each keyword in the list of keywords        or a ratio of the number of user matches to total number of        users in the crowd for each keyword in the list of keywords. The        one or more advertisement selection criteria may be        system-defined, advertiser-specific, or advertisement-specific.

In one embodiment, the one or more advertisement selection criteria areutilized by the fragmented ad function 62 to select the fragmentedadvertisement that best matches the crowd. More specifically, in thisembodiment, each fragmented advertisement accessible to the fragmentedad function 62 has corresponding metadata that describes the fragmentedadvertisement and, optionally, target crowds for the fragmentedadvertisement. The metadata that describes the fragmented advertisementmay include, for example, information that describes the advertisedbusiness, good, or service (e.g., business name and hours of operation)and information that defines the number of advertisement fragmentsincluded in the fragmented advertisement. The metadata that describesthe target crowds for the fragmented advertisement may include anyinformation that can be matched against the aggregate profile of a crowdor the user profiles of the users 20 in a crowd such as, for example,demographic information (e.g., target age range, target income level,etc.), interests (e.g., music), or the like. In addition, the metadatathat describes the target crowds for the fragmented advertisement mayinclude a minimum crowd size (i.e., minimum number of users) and/or amaximum crowd size (i.e., maximum number of users). The fragmentedadvertisement for the crowd may then be selected based on the metadatafor the fragmented advertisements accessible to the fragmented adfunction 62 and the one or more advertisement selection criteria.

In another embodiment, rather than selecting the fragmentedadvertisement, the fragmented ad function 62 generates the fragmentedadvertisement based on one or more characteristics of the crowd. Morespecifically, the fragmented ad function 62 may have access to a numberof traditional advertisements having defined advertisement benefits(e.g., advertisement for a particular business with a buy one get twofree coupon). The fragmented ad function 62 first selects thetraditional advertisement that best matches the crowd based on metadatathat describes the traditional advertisement, the advertisement benefitsof the traditional advertisements, and data that describes the crowd.Again, the metadata that describes a traditional advertisement mayinclude, for example, information that describes the advertisedbusiness, good, or service (e.g., business name and hours of operation).The data that describes the crowd may be an aggregate profile of thecrowd, the user profiles of the users 20 in the crowd, the location ofthe crowd, or the like. Additional factors such as time of day andadvertisement value may also be considered. As an example, if theaggregate profile of the crowd indicates that the crowd has three usersand all three users like coffee, then the fragmented ad function 62 mayselect a traditional advertisement for Starbucks® coffee that includes abuy one get two free coupon. Then, the fragmented ad function 62generates the fragmented advertisement based on the selected traditionaladvertisement, where the fragmented advertisement includes a differentadvertisement fragment for each participant, which at this point is eachof the users 20 in the crowd. As discussed above, the fragmentedadvertisement may include a first advertisement fragment that includes aquestion, puzzle, or other item defining a goal to be achieved by theparticipants and a number of additional advertisements that encourageinteraction among the participants to achieve the goal (e.g., a numberof hints).

Once the fragmented advertisement is determined, the fragmented adfunction 62 of the MAP server 12 delivers the fragmented advertisementto the master device selected for the crowd, which in this example isthe mobile device 18-1 (step 1406). The fragmented advertisementincludes a number of advertisement fragments to be distributed to thedifferent participants, which at this point are the different users inthe crowd. In general, the advertisement fragments encourage interactionbetween the participants to achieve a predefined goal. The predefinedgoal may be answering a question, solving a puzzle, or the like. As anexample, the fragmented advertisement may include a first advertisementfragment that provides a question to be answered by the crowd, a secondadvertisement fragment that provides a first hint for the question, athird advertisement fragment that provides a second hint for thequestion, and so on.

Next, the mobile device 18-1 distributes the advertisement fragments tothe mobile devices 18 of the other users 20 in the crowd (steps 1408 and1410). In this example, the other users 20 in the crowd are the users20-2 and 20-3. As such, the mobile device 18-1 sends one advertisementfragment to the mobile device 18-2 of the user 20-2 and a differentadvertisement fragment to the mobile device 18-3 of the user 20-3.Preferably, the mobile device 18-1 delivers the advertisement fragmentsto the mobile devices 18-2 and 18-3 via corresponding wireless LAN orwireless PAN connections. Returning to the example given above, themobile device 18-1 retains the first advertisement fragment (ad fragmentX) which includes the question to be answered, delivers the secondadvertisement fragment (ad fragment Y) which includes the first hint tothe mobile device 18-2, and delivers the third advertisement fragment(ad fragment Z) which includes the second hint to the mobile device18-3.

The mobile device 18-1 presents the first advertisement fragment (adfragment X) to the user 20-1 at the mobile device 18-1 (step 1412).Likewise, the mobile device 18-2 presents the second advertisementfragment (ad fragment Y) to the user 20-2 at the mobile device 18-2(step 1414), and the mobile device 18-3 presents the third advertisementfragment (ad fragment Z) to the user 20-3 at the mobile device 18-3(step 1416). Note that the advertisement fragments may be presented bythe MAP applications 32 of the mobile devices 18-1, 18-2, and 18-3 or bycorresponding third-party applications 34 depending on the particularimplementation. The users 20-1, 20-2, and 20-3 may then interact in anattempt to achieve the predefined goal of the fragmented advertisement.The users 20-1, 20-2, and 20-3 may interact via, for example, directverbal communication. Continuing the example above, the users 20-1,20-2, and 20-3 may talk to one another to answer the question presentedto the user 20-1 based on the hints presented to the users 20-2 and20-3.

Next, the mobile device 18-1 receives user input from at least the user20-1 of the mobile device 18-1 in an attempt to achieve the predefinedgoal of the fragmented advertisement (step 1418). In one embodiment, ifthe fragmented advertisement asks a question, then the user 20-1provides user input to the mobile device 18-1 to provide an answer tothe question. In an alternative embodiment, any of the users 20-1, 20-2,and 20-3 may be enabled to provide an answer to the question at theircorresponding mobile devices 18-1, 18-2, and 18-3. In a similar manner,if the fragmented advertisement provides a puzzle, the user 20-1 or anyof the users 20-1, 20-2, and 20-3 provides user input in an attempt tosolve the puzzle.

After receiving the user input, the mobile device 18-1 sends a responseto the fragmented ad function 62 of the MAP server 12 (step 1420). Theresponse generally includes information indicating whether the users20-1, 20-2, and 20-3 achieved the predefined goal of the fragmentedadvertisement. More specifically, in one embodiment, the responseincludes the user input received in step 1418. In another embodiment,the mobile device 18-1 may be enabled to determine whether the users20-1, 20-2, and 20-3 achieved the predefined goal of the fragmentedadvertisement based on the user input received in step 1418, and theresponse includes an indicator that directly indicates whether the users20-1, 20-2, and 20-3 achieved the predefined goal of the fragmentedadvertisement.

In this exemplary embodiment, based on the response, the fragmented adfunction 62 determines that the users 20-1, 20-2, and 20-3 achieved thepredefined goal of the fragmented advertisement (step 1422). As such,the fragmented ad function 62 delivers an advertisement benefit to themobile device 18-1 for distribution to the users 20-1, 20-2, and 20-3(step 1424). The advertisement benefit is generally any benefitconferred to the users 20-1, 20-2, and 20-3 for the advertised business,service, or product. Preferably, the advertisement benefit is a coupon.The advertisement benefit may be fragmented between the participants(e.g., a 15% off coupon to give each participant 5% off) or targeted tothe group as a whole (e.g., a buy one get two free coupon for a group ofthree participants). In this embodiment, the mobile device 18-1 thenpresents the advertisement benefit to the user 20-1 (step 1426). Whilenot illustrated, the mobile device 18-1 may distribute the advertisementbenefit to the mobile devices 18-2 and 18-3 of the other users 20-2 and20-3. In an alternative embodiment, the advertisement benefit isincluded in the fragmented advertisement and is released locally at themobile device 18-1 if the participants achieve the predefined goal ofthe fragmented advertisement.

FIGS. 13A and 13B are flow charts that illustrate the operation of thefragmented ad function 62 and the master device, respectively, accordingto another embodiment of the present disclosure. As illustrated in FIG.13A, the fragmented ad function 62 identifies a crowd for fragmentedadvertisement delivery (step 1500), selects one of the mobile devices 18of the users 20 in the identified crowd as a master device (step 1502),determines a fragmented advertisement for the crowd (step 1504), anddelivers the fragmented advertisement to the master device (step 1506)in the same manner as that described above with respect to steps 1400through 1406 of FIG. 12.

As discussed below in detail, in this embodiment after receiving thefragmented advertisement, the master device either accepts or rejectsthe fragmented advertisement. If accepted, the master device verifiesthat the users 20 in the crowd are willing to participate in thefragmented advertisement and also determines whether there areadditional users located nearby that are willing to participate in thefragmented advertisement. Any change in participants is communicatedback to the fragmented ad function 62, which in turn updates thefragmented advertisement for the updated group of participants.

As such, in this embodiment after delivering the fragmentedadvertisement to the master device, the fragmented ad function 62determines whether a response has been received from the master device(step 1508). If not, the fragmented ad function 62 continues to waituntil a response has been received (step 1510). Once a response has beenreceived, the fragmented ad function 62 determines whether the responseindicates that the master device has rejected the fragmentedadvertisement (step 1512). If so, the user record 74 of the user 20 ofthe master device is updated to reflect that the fragmentedadvertisement was rejected (step 1514). Note that, in this case, theuser record 74 includes one or more additional fields for storing suchhistorical information regarding fragmented advertisements.

If the response is not a response indicating that the fragmentedadvertisement was rejected, the fragmented ad function 62 determineswhether the response is a notification of a change in the participantsfor the fragmented advertisement (step 1516). Initially, theparticipants for the fragmented advertisement are all of the users 20 inthe crowd. However, as discussed below, some of the users 20 in thecrowd may choose not to participate. In addition, the master device mayidentify additional participants for the fragmented advertisement. Ifthe response is a notification of a change in the participants, theprocess returns to step 1504 and is repeated for an updated group ofparticipants as defined by the received notification. Note, however,that if there are additional participants that are not users 20 of thesystem 10, the notification may also include user profiles for theadditional participants. When repeating step 1504, the fragmentedadvertisement is determined for the group of participants, which is nowdifferent than the users 20 in the crowd. The group of participants isstill preferably a group of co-located users, but may include less thanall of the users 20 in the crowd identified in step 1500 and/or mayinclude additional users not in the crowd identified in step 1500. Assuch, when repeating step 1504, the fragmented advertisement is selectedbased on the group of participants (e.g., an aggregate profile for thegroup of participants) rather than the crowd identified in step 1500.

Returning to step 1516, if the response is not a notification of achange in participants, the fragmented ad function 62 determines whetherthe response indicates that the predefined goal of the fragmentedadvertisement has been achieved by the participants (step 1518). If not,in this embodiment, the fragmented ad function 62 delivers a consolationto the master device for distribution to the participants (step 1520).The consolation may simply be a message indicating that the predefinedgoal was not achieved. In addition or alternatively, the consolation mayinclude a downgraded version of the advertisement benefit that would bedelivered if the participants were to achieve the predefined goal of thefragmented advertisement or some other lesser advertisement benefit.Returning to step 1518, if the response indicates that the predefinedgoal of the fragmented advertisement has been achieved by theparticipants, the fragmented ad function 62 delivers the advertisementbenefit for the fragmented advertisement to the master device fordistribution to the participants (step 1522).

FIG. 13B illustrates the operation of the master device in response toreceiving the fragmented advertisement from the fragmented ad function62 in step 1506 of FIG. 13A according to one embodiment of the presentdisclosure. More specifically, this process may be performed by, forexample, the MAP application 32 of the master device. As illustrated,the master device receives the fragmented advertisement (step 1600).Next, the master device determines whether to accept the fragmentedadvertisement (step 1602). The determination as to whether to accept thefragmented advertisement may be based on manual input from the user 20of the master device in response to receiving the fragmentedadvertisement. Alternatively, the determination may be madeautomatically based on one or more predefined criteria, which may beconfigured by the user 20 of the master device prior to receiving thefragmented advertisement. These predefined criteria may include, forexample, a block setting that may be set by the user 20 of the masterdevice such that all fragmented advertisements are automatically blockedduring a defined period of time (e.g., next hour, after 7 p.m., or thelike), when located at a defined location (e.g., block all fragmentedadvertisements when at work), or the like. Other contextual data may beused in addition to or as an alternative to time and location.

If the fragmented advertisement is not accepted, the master devicereturns an advertisement rejection response to the fragmented adfunction 62 (step 1604). If the fragmented advertisement is accepted,the master device verifies that the users identified as participants forthe fragmented advertisement are willing to participate (step 1606).Initially, the users identified as participants are the users 20 in thecrowd identified by the fragmented ad function 62 in step 1500 of FIG.13A. Verification may be based on manual input from the user 20 of themaster device after verifying the participants via a communicationchannel such as, for example, verbal communication. For example, theuser 20 may verbally ask the other users 20 in the crowd, which may beidentified by data from the MAP server provided in association with thefragmented advertisement, if they are willing to participate in thefragmented advertisement. Then, the user 20 may provide correspondinginput to the master device to identify the users 20 that agreed toparticipate or that have chosen not to participate. Alternatively, themaster device may prompt the user 20 of the master device forverification that the user 20 is willing to participate and sendrequests to the mobile devices 18 of the other users 20 in the crowd forverification that the other users 20 are willing to participate. Themobile devices 18 of the other users 20 in the crowd may then prompt theother users 20 for verification that they are willing to participate andthen return the results to the master device. Alternatively, the mobiledevices 18 of the other users 20 in the crowd may automaticallydetermine whether to verify that the other users 20 are willing toparticipate based on one or more predefined criteria, which may bepre-configured by the other users 20. These predefined criteria mayinclude, for example, a block setting that may be set by the other users20 such that all verification requests are automatically denied (e.g.,response sent indicating that the other users 20 are not willing toparticipate or no verification response sent) during a defined period oftime (e.g., next hour, after 7 p.m., or the like), when located at adefined location (e.g., deny all verification requests when at work), orthe like. Other contextual data may be used in addition to or as analternative to time and location.

In addition to verifying the participants, in this embodiment, themaster device attempts to find additional participants for thefragmented advertisement (step 1608). More specifically, in oneembodiment, the master device utilizes a proximity based messagingsystem (e.g., messaging via a wireless LAN or wireless PAN connection)to query other users of nearby devices that are not users 20 of themobile devices 18 if they are willing to participate. If so, userprofiles of the users are preferably returned to the master device.

At this point, the master device determines whether there has been achange to the participants (step 1610). The change in participants mayoccur as a result of one or more of the users 20 in the crowd choosingnot to participate or as a result of finding additional users that arenearby and willing to participate. If there is a change in participants,the master device returns a response including a notification of thechange in participants to the fragmented ad function 62 (step 1612).Note that if the change in participants includes adding additional usersthat are not users of the system 10, then the response preferablyincludes user profiles of the additional users.

If there is no change in the participants, then the master device sendsthe advertisement fragments of the fragmented advertisement to thedevices of the participants (step 1614). The master device then receivesuser input from one or more of the participants in an attempt for theparticipants to achieve the predefined goal of the fragmentedadvertisement (step 1616) and then sends a response to the fragmented adfunction 62 that is indicative of whether the participants achieved thepredefined goal of the fragmented advertisement based on the receiveduser input (step 1618). Lastly, the master device receives theadvertisement benefit or the consolation from the fragmented ad function62 depending on whether the participants achieved the predefined goal ofthe fragmented advertisement (step 1620).

FIGS. 14A through 14D graphically illustrate an exemplary fragmentedadvertisement according to one embodiment of the present disclosure. Inthis example, the participants for the fragmented advertisement arethree of the users 20, namely the users 20-1 through 20-3, and theadvertisement components of the fragmented advertisement are presentedto the users 20-1 through 20-3 via a Graphical User Interface (GUI) ofthe MAP applications 32-1 through 32-3 of the mobile devices 18-1through 18-3. Specifically, FIG. 14A illustrates a first advertisementcomponent of the fragmented advertisement presented to the user 20-1 viaa Coupon screen 128 of the GUI of the MAP application 32-1 at the mobiledevice 18-1, which has been selected as the master device. In thisexample, the first advertisement component includes a question thatreads “What Spanish conquistador led an expedition that caused the fallof the Aztec empire?” Also, in this example, the first advertisementcomponent includes instructions that tell the user 20-1 that theparticipants will win a Starbucks® Buy One Get Two Free Coupon if thequestion is answered correctly in 60 seconds and a notification thatnearby friends (participants) have some helpful clues. The user 20-1 canenter an answer to the question by selecting an “Answer this Question”button 130. Alternatively, in this example, the user 20-1 can choose totry another question by selecting a corresponding button 132. In thisexample, the fragmented advertisement has multiple questions, where anyof the questions may be answered in order to receive the coupon. Thus,if the user 20-1 does not know the answer to the current question, theuser 20-1 may select the button 132 to try another question included inthe fragmented advertisement.

FIGS. 14B and 14C illustrate second and third advertisement fragments ofthe fragmented advertisement presented to the two other users 20-2 and20-3 that are participants for the fragmented advertisement according toone embodiment of the present disclosure. More specifically, asillustrated in FIG. 14B, the second advertisement fragment is presentedto the user 20-2 via a Coupon screen 134 of the GUI of the MAPapplication 32-2 of the mobile device 18-2. In this example, the secondadvertisement fragment includes the hint “For your friend's couponquestion: The last name begins with a ‘C’.” In addition, the secondadvertisement component includes instructions that tell the user 20-2that the participants will win a Starbucks® Buy One Get Two Free Couponif the question is answered correctly in 60 seconds and a notificationthat nearby friends (participants) have some additional helpful clues.

Likewise, as illustrated in FIG. 14C, the third advertisement fragmentis presented to the user 20-3 via a Coupon screen 136 of the GUI of theMAP application 32-3 of the mobile device 18-3. In this example, thethird advertisement fragment includes the hint “For your friend's couponquestion: The first name is ‘Hernan’.” In addition, the thirdadvertisement component includes instructions that tell the user 20-3that the participants will win a Starbucks® Buy One Get Two Free Couponif the question is answered correctly in 60 seconds and a notificationthat nearby friends (participants) have some additional helpful clues.The users 20-1, 20-2, and 20-3 are thereby encouraged to interact withone another (speak with one another to share the question and the clues)in order to come up with the correct answer to the question. If theusers 20-1, 20-2, and 20-3 provide the correct answer, then theStarbucks® Buy One Get Two Free Coupon is provided to the users 20-1,20-2, and 20-3. In this example, the coupon is provided to the users20-1, 20-2, and 20-3 by presenting the coupon in a Coupon display screen138 of the MAP application 32-1 of the mobile device 18-1, asillustrated in FIG. 14D.

The following is an exemplary and non-limiting use case that utilizesthe fragmented advertisement and corresponding advertisement benefitdescribed above with respect to FIGS. 14A through 14D.

-   -   1. Karen and two of her friends are walking in the Village.    -   2. Karen has opted in to fragmented advertisements because she        has heard that they are both fun and valuable.    -   3. The system identifies Karen and her two friends as a group of        co-located users to which a fragmented advertisement can be        provided.    -   4. The fragmented ad function 62 determines that the group is        likely to respond to a fragmented advertisement for coffee based        on an aggregate profile of the group.    -   5. As such, the fragmented ad function 62 delivers a fragmented        advertisement for Starbucks® coffee to the group, where the        fragmented advertisement includes three advertisement fragments,        namely, a question and two different hints for the answer to the        question.    -   6. The advertisement fragment that includes the following        question is presented to Karen on her mobile device:        -   “Answer this question in 60 seconds and win a Buy One Get            Two Free Coupon!”        -   “What Spanish conquistador led an expedition that caused the            fall of the Aztec empire?” “Hint: Nearby friends have some            helpful clues!”    -   7. Karen also sees that a sixty second clock has started        counting down for the offer. She is interested in the offer        because it is very generous and she loves coffee. However, she        can only think of a couple of conquistador names and she is        unsure which might be the correct answer.    -   8. She knows that she does not have time to perform an Internet        search to find the answer to the question. However, she does        have time to ask her nearby friends for help.    -   9. Both friends have received advertisement fragments that        provide different hints to the answer of the question. One        friend has a hint that reads: “For your friend's coupon        question: The last name begins with a ‘C’.” The other friend has        a hint that reads: “For your friend's coupon question: The first        name is ‘Hernan’.”    -   10. As the clock ticks down, Karen and her friends pool their        resources to come up with the right answer and win the coupon.

FIG. 15 is a block diagram of the MAP server 12 according to oneembodiment of the present disclosure. As illustrated, the MAP server 12includes a controller 140 connected to memory 142, one or more secondarystorage devices 144, and a communication interface 146 by a bus 148 orsimilar mechanism. The controller 140 is a microprocessor, digitalApplication Specific Integrated Circuit (ASIC), Field Programmable GateArray (FPGA), or similar hardware device. In this embodiment, thecontroller 140 is a microprocessor, and the application layer 40, thebusiness logic layer 42, and the object mapping layer 63 (FIG. 2) areimplemented in software and stored in the memory 142 for execution bythe controller 140. Further, the datastore 64 (FIG. 2) may beimplemented in the one or more secondary storage devices 144. Thesecondary storage devices 144 are digital data storage devices such as,for example, one or more hard disk drives. The communication interface146 is a wired or wireless communication interface that communicativelycouples the MAP server 12 to the network 28 (FIG. 1). For example, thecommunication interface 146 may be an Ethernet interface, local wirelessinterface such as a wireless interface operating according to one of thesuite of IEEE 802.11 standards, or the like.

FIG. 16 is a block diagram of the mobile device 18 of one of the users20 of FIG. 1 according to one embodiment of the present disclosure. Asillustrated, the mobile device 18 includes a controller 150 connected tomemory 152, a communication interface 154, one or more user interfacecomponents 156, and the location function 36 by a bus 158 or similarmechanism. The controller 150 is a microprocessor, digital ASIC, FPGA,or similar hardware device. In this embodiment, the controller 150 is amicroprocessor, and the MAP client 30, the MAP application 32, and thethird-party applications 34 are implemented in software and stored inthe memory 152 for execution by the controller 150. In this embodiment,the location function 36 is a hardware component such as, for example, aGPS receiver. The communication interface 154 is a wirelesscommunication interface that communicatively couples the mobile device18 to the network 28 (FIG. 1). For example, the communication interface154 may be a local wireless interface such as a wireless interfaceoperating according to one of the suite of IEEE 802.11 standards, amobile communications interface such as a cellular telecommunicationsinterface, or the like. The one or more user interface components 156include, for example, a touchscreen, a display, one or more user inputcomponents (e.g., a keypad), a speaker, or the like, or any combinationthereof.

The present disclosure provides substantial opportunity for variationwithout departing from the scope of the concepts disclosed herein. Forexample, in the embodiments of FIG. 12 and FIGS. 13A and 13B, thefragmented advertisement is delivered to the group of participants bydelivering the fragmented advertisement to a master device, which thendistributes the advertisement fragments to the participants. However,the present disclosure is not limited thereto. In an alternativeembodiment, no master device is selected, and the fragmented ad function62 delivers the advertisement fragments to the devices of theparticipants.

As another example, while fragmented advertisement delivery is primarilydescribed herein with respect to the system 10, the present disclosureis not limited thereto. For instance, the present disclosure is notlimited to delivering fragmented advertisements to crowds of users or togroups of participants that are based on crowds of users. Fragmentedadvertisements may be delivered to groups of co-located users formed oridentified using any suitable technique.

As yet another example, while the fragmented ad function 62 has beendescribed as being implemented in the MAP server 12, the presentdisclosure is not limited thereto. In one alternative embodiment, thefragmented ad function 62 may be implemented as, or as part of, thethird-party service 26. More specifically, when implemented as thethird-party service 26, the fragmented ad function 62 may query the MAPserver 12 for crowd data (e.g., crowd locations, aggregate profiles,etc.), and then identify a crowd for fragmented advertisement deliverybased on the crowd data. Then, the fragmented ad function 62 may deliverthe fragmented advertisement to the crowd either directly using contactinformation obtained from the MAP server 12 or via the MAP server 12 asan intermediary.

Those skilled in the art will recognize improvements and modificationsto the preferred embodiments of the present disclosure. All suchimprovements and modifications are considered within the scope of theconcepts disclosed herein and the claims that follow.

What is claimed is:
 1. A computer-implemented method comprising:identifying a group of participants for fragmented advertisementdelivery; determining a fragmented advertisement for the group ofparticipants, the fragmented advertisement comprising a plurality ofadvertisement fragments that encourage interaction between participantsfor the fragmented advertisement to achieve a predefined goal of thefragmented advertisement; and delivering the fragmented advertisement tothe group of participants.
 2. The method of claim 1 wherein the group ofparticipants is a group of co-located users.
 3. The method of claim 1wherein the group of participants is a crowd of users being formed via aspatial crowd formation process.
 4. The method of claim 1 whereinidentifying the group of participants comprises: identifying an initialgroup of participants for fragmented advertisement delivery; determiningan initial fragmented advertisement for the initial group ofparticipants; delivering the initial fragmented advertisement to theinitial group of participants; and receiving a notification of a changein participants that defines at least one change to the initial group ofparticipants to thereby identify the group of participants forfragmented advertisement delivery.
 5. The method of claim 4 wherein thenotification of the change in participants comprises a notification thatone or more of the participants in the initial group of participants areto be removed as participants.
 6. The method of claim 4 wherein thenotification of the change in participants comprises a notification thatone or more users are to be added as additional participants.
 7. Themethod of claim 1 wherein selecting the fragmented advertisement for thegroup of participants comprises selecting the fragmented advertisementfor the group of participants from a plurality of fragmentedadvertisements.
 8. The method of claim 7 wherein selecting thefragmented advertisement comprises selecting the fragmentedadvertisement for the group of participants from the plurality offragmented advertisements based on an aggregate profile of the group ofparticipants.
 9. The method of claim 7 wherein selecting the fragmentedadvertisement comprises selecting the fragmented advertisement for thegroup of participants from the plurality of fragmented advertisementsbased on user profiles of a plurality of users that form the group ofparticipants.
 10. The method of claim 7 wherein selecting the fragmentedadvertisement comprises selecting the fragmented advertisement for thegroup of participants from the plurality of fragmented advertisementsbased on a location of the group of participants.
 11. The method ofclaim 7 wherein selecting the fragmented advertisement comprisesselecting the fragmented advertisement for the group of participantsfrom the plurality of fragmented advertisements based on historicalinformation regarding one or more fragmented advertisements previouslydelivered to the group of participants.
 12. The method of claim 7wherein selecting the fragmented advertisement comprises selecting thefragmented advertisement for the group of participants from theplurality of fragmented advertisements based on device capabilities of aplurality of user devices of the group of participants, wherein eachparticipant in the group of participants has a corresponding user deviceof the plurality of user devices.
 13. The method of claim 1 whereindetermining the fragmented advertisement for the group of participantscomprises generating the fragmented advertisement based on one or morecharacteristics of the group of participants.
 14. The method of claim 13wherein the one or more characteristics of the group of participantscomprise a number of participants in the group of participants.
 15. Themethod of claim 14 wherein the one or more characteristics of the groupof participants further comprise an aggregate profile of the group ofparticipants.
 16. The method of claim 1 wherein delivering thefragmented advertisement to the group of participants comprises:selecting a user device of one of the group of participants as a masterdevice; and delivering the fragmented advertisement to the master devicesuch that the master device distributes each of the plurality ofadvertisement fragments to a different participant in the group ofparticipants.
 17. The method of claim 16 wherein selecting the userdevice of the one of the group of participants as the master devicecomprises selecting the user device of the one of the group ofparticipants as the master device based on historical information thatindicates that the one of the group of participants was previously aparticipant for another fragmented advertisement.
 18. The method ofclaim 16 wherein selecting the user device of the one of the group ofparticipants as the master device comprises selecting the user device ofthe one of the group of participants as the master device based onhistorical information that indicates that the user device of the one ofthe group of participants was previously selected as a master device fordelivery of another fragmented advertisement.
 19. The method of claim 16wherein selecting the user device of the one of the group ofparticipants as the master device comprises selecting the user device ofthe one of the group of participants as the master device based ondevice capabilities.
 20. The method of claim 16 wherein the group ofparticipants is a crowd of users formed via a spatial crowd formationprocess, and selecting the user device of the one of the group ofparticipants as the master device comprises selecting the user device ofthe one of the group of participants as the master device based on anamount of time that the one of the group of participants has been in thecrowd of users.
 21. The method of claim 1 further comprising: receivinga response from at least one of the group of participants that isindicative of whether the group of participants achieved the predefinedgoal of the fragmented advertisement; and delivering an advertisementbenefit to the group of participants if the group of participantsachieved the predefined goal of the fragmented advertisement.
 22. Themethod of claim 21 wherein the predefined goal of the fragmentedadvertisement is answering a question, and the plurality ofadvertisement fragments of the fragmented advertisement comprise a firstadvertisement fragment that includes the question and one or moreadditional advertisement fragments that each include a different hint toa correct answer to the question.
 23. The method of claim 21 wherein thepredefined goal of the fragmented advertisement is solving a puzzle, andthe plurality of advertisement fragments of the fragmented advertisementcomprise a first advertisement fragment that includes the puzzle and oneor more additional advertisement fragments that each include a differenthint to solving the puzzle.
 24. A server comprising: a communicationinterface adapted to communicatively couple the server to a network; anda controller associated with the communication interface and adapted to:identify a group of participants for fragmented advertisement delivery;determine a fragmented advertisement for the group of participants, thefragmented advertisement comprising a plurality of advertisementfragments that encourage interaction between participants for thefragmented advertisement to achieve a predefined goal of the fragmentedadvertisement; and deliver the fragmented advertisement to the group ofparticipants via the network.
 25. A computer readable medium storingsoftware for instructing a controller of a computing device to: identifya group of participants for fragmented advertisement delivery; determinea fragmented advertisement for the group of participants, the fragmentedadvertisement comprising a plurality of advertisement fragments thatencourage interaction between participants for the fragmentedadvertisement to achieve a predefined goal of the fragmentedadvertisement; and deliver the fragmented advertisement to the group ofparticipants.